I've opened https://trac.sagemath.org/ticket/28949

to deal with this problem.

On Fri, Jan 3, 2020 at 9:20 PM Dima Pasechnik <[email protected]> wrote:
>
> 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/CAAWYfq118T%3D9bRBPU1%3DDNDYZpnEnjTW6q4y%2Bx4AvaKxnZBHW2A%40mail.gmail.com.

Reply via email to