probleming in getting Mathics3 working

47 views
Skip to first unread message

Rashad alsharpini2

unread,
Mar 14, 2026, 12:07:37 PM (17 hours ago) Mar 14
to sage-devel

so i have install the package 
`pip install mathics3` and i get this huge error log
would this be the objective of the project 'Improve integration with Mathics'
or this an isolated error for machine because i can't really i identify the error
i thought it was a mismatch in npmath package but that didn't solve it 
and there are a problem when calling the .sage() function to convert the object to a sageobj
(sage-dev) >>>    sage [develop] pip list | grep -i mathics
Mathics_Scanner               2.0.0
Mathics3                      9.0.0
(sage-dev) >>>    sage [develop] python --version
Python 3.12.12
(sage-dev) >>>    sage [develop] which python
/home/rashad/.conda/envs/sage-dev/bin/python
(sage-dev) >>>    sage [develop]
(sage-dev) >>>    sage [develop] ./sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 10.9.beta7, Release Date: 2026-02-25              │
│ Using Python 3.12.12. Type "help()" for help.                      │
└────────────────────────────────────────────────────────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Warning: this is a prerelease version, and it may be unstable.     ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
sage: from sage.interfaces.mathics import mathics
sage: mobj = mathics(x^2 - 1); mobj
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
File ~/sage/sage/src/sage/interfaces/interface.py:329, in Interface._coerce_from_special_method(self, x)
    328 try:
--> 329     return (x.__getattribute__(s))(self)
    330 except AttributeError:

File sage/structure/sage_object.pyx:979, in sage.structure.sage_object.SageObject._mathics_()

File sage/symbolic/expression.pyx:1123, in sage.symbolic.expression.Expression._interface_()

File sage/structure/sage_object.pyx:723, in sage.structure.sage_object.SageObject._interface_()

File ~/sage/sage/src/sage/interfaces/interface.py:294, in Interface.__call__(self, x, name)
    293 if isinstance(x, str):
--> 294     return cls(self, x, name=name)
    295 try:
    296     # Special methods do not and should not have an option to
    297     # set the name directly, as the identifier assigned by the
    298     # interface should stay consistent. An identifier with a
    299     # user-assigned name might change its value, so we return a
    300     # new element.

File ~/sage/sage/src/sage/interfaces/interface.py:732, in InterfaceElement.__init__(self, parent, value, is_name, name)
    731 try:
--> 732     self._name = parent._create(value, name=name)
    733 except (TypeError, RuntimeError, ValueError) as x:

File ~/sage/sage/src/sage/interfaces/interface.py:515, in Interface._create(self, value, name)
    514 name = self._next_var_name() if name is None else name
--> 515 self.set(name, value)
    516 return name

File ~/sage/sage/src/sage/interfaces/mathics.py:596, in Mathics.set(self, var, value)
    595 cmd = f'{var}={value};'
--> 596 _ = self.eval(cmd)

File ~/sage/sage/src/sage/interfaces/mathics.py:579, in Mathics.eval(self, code, *args, **kwds)
    570 """
    571 Evaluates a command inside the Mathics interpreter and returns the output
    572 in printable form.
   (...)    577     '2'
    578 """
--> 579 res = self._eval(code)
    580 if res.result == 'Null':

File ~/sage/sage/src/sage/interfaces/mathics.py:562, in Mathics._eval(self, code)
    553 """
    554 Evaluates a command inside the Mathics interpreter and returns the output
    555 as a Mathics result.
   (...)    560     <Integer: 2>
    561 """
--> 562 self._lazy_init()
    563 S = self._session

File ~/sage/sage/src/sage/interfaces/mathics.py:499, in Mathics._lazy_init(self)
    498 self._initialized = True
--> 499 self._start()

File ~/sage/sage/src/sage/interfaces/mathics.py:514, in Mathics._start(self)
    513 if not self._session:
--> 514     from mathics.session import MathicsSession
    515     from mathics.core.load_builtin import import_and_load_builtins

File ~/.conda/envs/sage-dev/lib/python3.12/site-packages/mathics/session.py:19
     17 from mathics_scanner.location import ContainerKind
---> 19 from mathics.core.definitions import Definitions
     20 from mathics.core.evaluation import Evaluation, Result

File ~/.conda/envs/sage-dev/lib/python3.12/site-packages/mathics/core/definitions.py:17
     15 from mathics_scanner.tokeniser import full_names_pattern
---> 17 from mathics.core.atoms import Integer, String
     18 from mathics.core.attributes import A_NO_ATTRIBUTES

File ~/.conda/envs/sage-dev/lib/python3.12/site-packages/mathics/core/atoms.py:50
     47 T = TypeVar("T")
---> 50 class Number(Atom, ImmutableValueMixin, NumericOperators, Generic[T]):
     51     """
     52     Different kinds of Mathics Numbers, the main built-in subclasses
     53     being: Integer, Rational, Real, Complex.
     54     """

File ~/.conda/envs/sage-dev/lib/python3.12/site-packages/mathics/core/atoms.py:119, in Number()
    117     return True
--> 119 def to_mpmath(self, precision: Optional[int] = None) -> mpmath.ctx_mp_python.mpf:
    120     """
    121     Convert self.value to an mpmath number with precision ``precision``
    122     If ``precision`` is None, use mpmath's default precision.
   (...)    127     change the implementation accordingly.
    128     """

AttributeError: module 'mpmath.ctx_mp_python' has no attribute 'mpf'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
Cell In[2], line 1
----> 1 mobj = mathics(x**Integer(2) - Integer(1)); mobj

File ~/sage/sage/src/sage/interfaces/interface.py:301, in Interface.__call__(self, x, name)
    294     return cls(self, x, name=name)
    295 try:
    296     # Special methods do not and should not have an option to
    297     # set the name directly, as the identifier assigned by the
    298     # interface should stay consistent. An identifier with a
    299     # user-assigned name might change its value, so we return a
    300     # new element.
--> 301     result = self._coerce_from_special_method(x)
    302     return result if name is None else result.name(new_name=name)
    303 except TypeError:

File ~/sage/sage/src/sage/interfaces/interface.py:331, in Interface._coerce_from_special_method(self, x)
    329     return (x.__getattribute__(s))(self)
    330 except AttributeError:
--> 331     return self(x._interface_init_())

File sage/symbolic/expression.pyx:1151, in sage.symbolic.expression.Expression._interface_init_()

TypeError: _interface_init_() takes exactly 1 positional argument (0 given)
sage:

Travis Scrimshaw

unread,
Mar 14, 2026, 8:34:12 PM (9 hours ago) Mar 14
to sage-devel
It seems to me you would certainly want the interface to work in a manner that is consistent with the other interfaces.

Best,
Travis

Marc Culler

unread,
Mar 14, 2026, 11:09:32 PM (6 hours ago) Mar 14
to sage-devel
You are installing an extremely out of data mathics pip package which also forces installation of versions of other packages that are not compatible with SageMath 10.9.

You should run:

 %pip install Mathics3

instead.. That works for me.

- Marc
Reply all
Reply to author
Forward
0 new messages