On Fri, Jan 3, 2020 at 8:52 PM Donald Munro <[email protected]> wrote:
>
> Running:
>>
>> from sage.plot.plot3d.shapes2 import Line
>> X = Line([(-1, 0, 0), (0, 0, 0), (1, 0, 0)], color='red')
>> Y = Line([(0, -1, 0), (0, 0, 0), (0, -1,0)], color='green')
>> Z = Line([(0, 0, -1), (0, 0, 0), (0, 0, -1)], color='green')
>> show(X+Y+Z, figsize=8)
>
>
> results in a
>>
>> TypeError: Object of type Integer is not JSON serializable

the problem is that Sage's type Integer cannot be used in Line()
You'd need to use Python types, e.g. int(), float(), etc
E.g.

Line([(int(-1), int(0), int(0)), (int(0), int(0), int(0)), (int(1),
int(0), int(0))], color='red')

This appears to be a bug, not sure about its origin :-(


>
>
> The above works on 8.9 (tested using  docker run -p8888:8888 
> sagemath/sagemath:8.9 sage-jupyter).
>
> Error occurred on Arch Linux distribution using SageMath 9.0 and Python 3.8.1.
>
> The full error trace is:
>>
>> TypeError                                 Traceback (most recent call last)
>> <ipython-input-1-f86e4a3173d9> in <module>
>>       3 Y = Line([(Integer(0), -Integer(1), Integer(0)), (Integer(0), 
>> Integer(0), Integer(0)), (Integer(0), -Integer(1),Integer(0))], 
>> color='green')
>>       4 Z = Line([(Integer(0), Integer(0), -Integer(1)), (Integer(0), 
>> Integer(0), Integer(0)), (Integer(0), Integer(0), -Integer(1))], 
>> color='green')
>> ----> 5 show(X+Y+Z, figsize=Integer(8))
>>
>> /usr/lib/python3.8/site-packages/sage/repl/rich_output/pretty_print.py in 
>> show(*args, **kwds)
>>     256         args[0].show()
>>     257         return
>> --> 258     pretty_print(*args, **kwds)
>>
>> /usr/lib/python3.8/site-packages/sage/repl/rich_output/pretty_print.py in 
>> pretty_print(*args, **kwds)
>>     227             pass
>>     228         elif len(args) == 1:
>> --> 229             dm.display_immediately(*args, **kwds)
>>     230         else:
>>     231             SequencePrettyPrinter(*args, **kwds).pretty_print()
>>
>> /usr/lib/python3.8/site-packages/sage/repl/rich_output/display_manager.py in 
>> display_immediately(self, obj, **rich_repr_kwds)
>>     835             1/2
>>     836         """
>> --> 837         plain_text, rich_output = self._rich_output_formatter(obj, 
>> rich_repr_kwds)
>>     838         self._backend.display_immediately(plain_text, rich_output)
>>     839
>>
>> /usr/lib/python3.8/site-packages/sage/repl/rich_output/display_manager.py in 
>> _rich_output_formatter(self, obj, rich_repr_kwds)
>>     623         has_rich_repr = isinstance(obj, SageObject) and hasattr(obj, 
>> '_rich_repr_')
>>     624         if has_rich_repr:
>> --> 625             rich_output = self._call_rich_repr(obj, rich_repr_kwds)
>>     626         if isinstance(rich_output, OutputPlainText):
>>     627             plain_text = rich_output
>>
>> /usr/lib/python3.8/site-packages/sage/repl/rich_output/display_manager.py in 
>> _call_rich_repr(self, obj, rich_repr_kwds)
>>     581         if rich_repr_kwds:
>>     582             # do not ignore errors from invalid options
>> --> 583             return obj._rich_repr_(self, **rich_repr_kwds)
>>     584         try:
>>     585             return obj._rich_repr_(self)
>>
>> /usr/lib/python3.8/site-packages/sage/plot/plot3d/base.pyx in 
>> sage.plot.plot3d.base.Graphics3d._rich_repr_ 
>> (build/cythonized/sage/plot/plot3d/base.c:5483)()
>>     149         ### Second, return the corresponding graphics file
>>     150         if viewer == 'threejs':
>> --> 151             return self._rich_repr_threejs(**opts)
>>     152         elif viewer == 'jmol':
>>     153             return self._rich_repr_jmol(**opts)
>>
>> /usr/lib/python3.8/site-packages/sage/plot/plot3d/base.pyx in 
>> sage.plot.plot3d.base.Graphics3d._rich_repr_threejs 
>> (build/cythonized/sage/plot/plot3d/base.c:9653)()
>>     409                 thickness = p._extra_kwds.get('thickness', 1)
>>     410                 lines.append('{{"points":{}, "color":"{}", 
>> "opacity":{}, "linewidth":{}}}'.format(
>> --> 411                              json.dumps(p.points), color, opacity, 
>> thickness))
>>     412             if hasattr(p, '_trans'):
>>     413                 m = p.get_transformation().get_matrix()
>>
>> /usr/lib/python3.8/json/__init__.py in dumps(obj, skipkeys, ensure_ascii, 
>> check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
>>     229         cls is None and indent is None and separators is None and
>>     230         default is None and not sort_keys and not kw):
>> --> 231         return _default_encoder.encode(obj)
>>     232     if cls is None:
>>     233         cls = JSONEncoder
>>
>> /usr/lib/python3.8/json/encoder.py in encode(self, o)
>>     197         # exceptions aren't as detailed.  The list call should be 
>> roughly
>>     198         # equivalent to the PySequence_Fast that ''.join() would do.
>> --> 199         chunks = self.iterencode(o, _one_shot=True)
>>     200         if not isinstance(chunks, (list, tuple)):
>>     201             chunks = list(chunks)
>>
>> /usr/lib/python3.8/json/encoder.py in iterencode(self, o, _one_shot)
>>     255                 self.key_separator, self.item_separator, 
>> self.sort_keys,
>>     256                 self.skipkeys, _one_shot)
>> --> 257         return _iterencode(o, 0)
>>     258
>>     259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
>>
>> /usr/lib/python3.8/json/encoder.py in default(self, o)
>>     177
>>     178         """
>> --> 179         raise TypeError(f'Object of type {o.__class__.__name__} '
>>     180                         f'is not JSON serializable')
>>     181
>>
>> TypeError: Object of type Integer is not JSON serializable
>
>
> --
> 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 [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sage-devel/4a7cb74f-0250-4dc8-9bb8-7af3d9d904b6%40googlegroups.com.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAAWYfq1utpHvj1kU%3DPotKz8Nj1EApZyZ6cCXCccm_c%3DEQmcf%3DA%40mail.gmail.com.

Reply via email to