Skip to content

Commit c2d2fca

Browse files
author
Matthias Koeppe
committed
QuaternionAlgebra: Use __classcall_private__
1 parent 31e2166 commit c2d2fca

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

src/sage/algebras/quatalg/quaternion_algebra.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
kronecker as kronecker_symbol,
4646
prime_divisors,
4747
valuation)
48+
from sage.misc.classcall_metaclass import ClasscallMetaclass
4849
from sage.rings.real_mpfr import RR
4950
from sage.rings.integer import Integer
5051
from sage.rings.integer_ring import ZZ
@@ -232,7 +233,8 @@ def create_key(self, arg0, arg1=None, arg2=None, names='i,j,k'):
232233
233234
TESTS::
234235
235-
sage: QuaternionAlgebra.create_key(-1,-1)
236+
sage: from sage.algebras.quatalg.quaternion_algebra import _QuaternionAlgebra
237+
sage: _QuaternionAlgebra.create_key(-1,-1)
236238
(Rational Field, -1, -1, ('i', 'j', 'k'))
237239
"""
238240
# QuaternionAlgebra(D)
@@ -285,15 +287,16 @@ def create_object(self, version, key, **extra_args):
285287
286288
TESTS::
287289
288-
sage: QuaternionAlgebra.create_object("6.0", (QQ, -1, -1, ('i', 'j', 'k')))
290+
sage: from sage.algebras.quatalg.quaternion_algebra import _QuaternionAlgebra
291+
sage: _QuaternionAlgebra.create_object("6.0", (QQ, -1, -1, ('i', 'j', 'k')))
289292
Quaternion Algebra (-1, -1) with base ring Rational Field
290293
291294
"""
292295
K, a, b, names = key
293296
return QuaternionAlgebra_ab(K, a, b, names=names)
294297

295298

296-
QuaternionAlgebra = QuaternionAlgebraFactory("QuaternionAlgebra")
299+
_QuaternionAlgebra = QuaternionAlgebraFactory("QuaternionAlgebra")
297300

298301
########################################################
299302
# Classes
@@ -309,26 +312,22 @@ def is_QuaternionAlgebra(A):
309312
sage: sage.algebras.quatalg.quaternion_algebra.is_QuaternionAlgebra(QuaternionAlgebra(QQ,-1,-1))
310313
doctest:warning...
311314
DeprecationWarning: the function is_QuaternionAlgebra is deprecated;
312-
use 'isinstance(..., QuaternionAlgebra_abstract)' instead
315+
use 'isinstance(..., QuaternionAlgebra)' instead
313316
See https://github.com/sagemath/sage/issues/37896 for details.
314317
True
315318
sage: sage.algebras.quatalg.quaternion_algebra.is_QuaternionAlgebra(ZZ)
316319
False
317320
"""
318321
from sage.misc.superseded import deprecation
319-
deprecation(37896, "the function is_QuaternionAlgebra is deprecated; use 'isinstance(..., QuaternionAlgebra_abstract)' instead")
320-
return isinstance(A, QuaternionAlgebra_abstract)
322+
deprecation(37896, "the function is_QuaternionAlgebra is deprecated; use 'isinstance(..., QuaternionAlgebra)' instead")
323+
return isinstance(A, QuaternionAlgebra)
321324

322325

323-
class QuaternionAlgebra_abstract(Parent):
324-
def _repr_(self):
325-
"""
326-
EXAMPLES::
326+
class QuaternionAlgebra(Parent, metaclass=ClasscallMetaclass):
327327

328-
sage: sage.algebras.quatalg.quaternion_algebra.QuaternionAlgebra_abstract(QQ)._repr_()
329-
'Quaternion Algebra with base ring Rational Field'
330-
"""
331-
return "Quaternion Algebra with base ring %s" % self.base_ring()
328+
@staticmethod
329+
def __classcall_private__(cls, *args, **kwds):
330+
return _QuaternionAlgebra(*args, **kwds)
332331

333332
def ngens(self):
334333
"""
@@ -620,7 +619,10 @@ def vector_space(self):
620619
return self.free_module()
621620

622621

623-
class QuaternionAlgebra_ab(QuaternionAlgebra_abstract):
622+
QuaternionAlgebra_abstract = QuaternionAlgebra # deprecated alias
623+
624+
625+
class QuaternionAlgebra_ab(QuaternionAlgebra):
624626
"""
625627
A quaternion algebra of the form `(a, b)_K`.
626628

0 commit comments

Comments
 (0)