Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
pass macaulay2 as argument to _macaulay2_init_()
Browse files Browse the repository at this point in the history
This gives access to the macaulay2 interpreter in the _macaulay2_init_()
function, so it can return Macaulay2Elements rather than just strings.

The magma interface also does this, but it had not been correctly setup
until now.
  • Loading branch information
mwageringel committed Oct 7, 2019
1 parent c2d89a0 commit 2823dc0
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/sage/rings/finite_rings/finite_field_base.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ cdef class FiniteField(Field):
s = "ext<%s|%s>"%(B._magma_init_(magma),p._magma_init_(magma))
return magma._with_names(s, self.variable_names())

def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
"""
Returns the string representation of ``self`` that Macaulay2 can
understand.
Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/finite_rings/integer_mod_ring.py
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ def __init__(self, order, cache=None, category=None):
self._zero_element = integer_mod.IntegerMod(self, 0)
self._one_element = integer_mod.IntegerMod(self, 1)

def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
"""
EXAMPLES::
Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/integer_ring.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1448,7 +1448,7 @@ cdef class IntegerRing_class(PrincipalIdealDomain):
"""
return 'IntegerRing()'

def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
"""
Return a macaulay2 representation of ``self``.
Expand Down
4 changes: 2 additions & 2 deletions src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1189,10 +1189,10 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
R._check_valid()
return R
except (AttributeError, ValueError):
self.__macaulay2 = macaulay2(self._macaulay2_init_())
self.__macaulay2 = macaulay2(self._macaulay2_init_(macaulay2))
return self.__macaulay2

def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
"""
EXAMPLES::
Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/polynomial/multi_polynomial_ring.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class MPolynomialRing_macaulay2_repr:
"""
A mixin class for polynomial rings that support conversion to Macaulay2.
"""
def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
"""
EXAMPLES::
Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/polynomial/polynomial_ring.py
Original file line number Diff line number Diff line change
Expand Up @@ -913,7 +913,7 @@ def _sage_input_(self, sib, coerced):
return sib.parent_with_gens(self, sie, self.variable_names(), 'R',
gens_syntax=gens_syntax)

def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
"""
EXAMPLES::
Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/rational_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -1427,7 +1427,7 @@ def _magma_init_(self, magma):
"""
return 'RationalField()'

def _macaulay2_init_(self):
def _macaulay2_init_(self, macaulay2=None):
r"""
Return the macaulay2 representation of `\QQ`.
Expand Down
18 changes: 13 additions & 5 deletions src/sage/structure/sage_object.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ register_unpickle_override('sage.structure.generators', 'make_list_gens',
__all__ = ['SageObject']


# The _interface_init_ for these interfaces takes the interface as argument
_interface_init_with_interface = set(['magma', 'macaulay2'])


cdef class SageObject:
"""
Base class for all (user-visible) objects in Sage
Expand Down Expand Up @@ -660,7 +664,10 @@ cdef class SageObject:
nm = I.name()
init_func = getattr(self, '_%s_init_' % nm, None)
if init_func is not None:
s = init_func()
if nm in _interface_init_with_interface:
s = init_func(I)
else:
s = init_func()
else:
try:
s = self._interface_init_(I)
Expand Down Expand Up @@ -831,10 +838,11 @@ cdef class SageObject:
G = sage.interfaces.macaulay2.macaulay2
return self._interface_(G)

def _macaulay2_init_(self):
import sage.interfaces.macaulay2
I = sage.interfaces.macaulay2.macaulay2
return self._interface_init_(I)
def _macaulay2_init_(self, macaulay2=None):
if macaulay2 is None:
import sage.interfaces.macaulay2
macaulay2 = sage.interfaces.macaulay2.macaulay2
return self._interface_init_(macaulay2)

def _maple_(self, G=None):
if G is None:
Expand Down

0 comments on commit 2823dc0

Please sign in to comment.