4545 kronecker as kronecker_symbol ,
4646 prime_divisors ,
4747 valuation )
48+ from sage .misc .classcall_metaclass import ClasscallMetaclass
4849from sage .rings .real_mpfr import RR
4950from sage .rings .integer import Integer
5051from 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