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

Commit

Permalink
improve error message when coercion/conversion fails for the center
Browse files Browse the repository at this point in the history
  • Loading branch information
xcaruso committed Apr 11, 2020
1 parent 7e4f15e commit 1eee2b4
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions src/sage/rings/polynomial/skew_polynomial_ring.py
Original file line number Diff line number Diff line change
Expand Up @@ -1312,6 +1312,7 @@ def __init__(self, base_ring, twist_map, name, sparse, category=None):
SkewPolynomialRing.__init__(self, base_ring, twist_map, name, sparse, category)
self._order = twist_map.order()
(self._constants, self._embed_constants) = twist_map.fixed_field()
self._center = { }

def center(self, name='z', names=None, coerce=True):
r"""
Expand Down Expand Up @@ -1411,17 +1412,21 @@ def center(self, name='z', names=None, coerce=True):
if names is None:
names = (name,)
names = normalize_names(1, names)
center = PolynomialRing(self._constants, names)
embed = SkewPolynomialCenterInjection(center, self, self._embed_constants, self._order)
try:
if coerce:
self.register_coercion(embed)
if names in self._center:
center, c = self._center[names]
if coerce and not c:
embed = SkewPolynomialCenterInjection(center, self, self._embed_constants, self._order)
self.register_coercion(embed)
else:
self.register_conversion(embed)
except AssertionError:
pass
try:
center.register_conversion(embed.section())
center = PolynomialRing(self._constants, names)
embed = SkewPolynomialCenterInjection(center, self, self._embed_constants, self._order)
if coerce:
self.register_coercion(embed)
else:
self.register_conversion(embed)
center.register_conversion(embed.section())
self._center[names] = (center, coerce)
except AssertionError:
pass
raise ValueError("creation of coercion/conversion map fails; consider using another variable name")
return center

0 comments on commit 1eee2b4

Please sign in to comment.