diff --git a/src/sage/rings/complex_double.pyx b/src/sage/rings/complex_double.pyx index 9038f2dd14f..204066e4904 100644 --- a/src/sage/rings/complex_double.pyx +++ b/src/sage/rings/complex_double.pyx @@ -2657,3 +2657,8 @@ cdef inline ComplexDoubleElement ComplexDoubleElement_from_doubles(double re, do z._complex.real = re z._complex.imag = im return z + + +# Support Python's numbers abstract base class +import numbers +numbers.Complex.register(ComplexDoubleElement) diff --git a/src/sage/rings/complex_mpc.pyx b/src/sage/rings/complex_mpc.pyx index e7f287aa9c9..b6780014030 100644 --- a/src/sage/rings/complex_mpc.pyx +++ b/src/sage/rings/complex_mpc.pyx @@ -2575,3 +2575,8 @@ cdef class CCtoMPC(Map): y = (self.codomain())._new() mpc_set_fr_fr(y.value, (z).__re, (z).__im, rnd) return y + + +# Support Python's numbers abstract base class +import numbers +from sage.rings.complex_mpc import MPComplexNumber diff --git a/src/sage/rings/complex_mpfr.pyx b/src/sage/rings/complex_mpfr.pyx index b419914f23f..91a6d47fd45 100644 --- a/src/sage/rings/complex_mpfr.pyx +++ b/src/sage/rings/complex_mpfr.pyx @@ -3610,3 +3610,8 @@ def _format_complex_number(real, imag, format_spec): "complex format specifier") result = format(result, align + width) return result + + +# Support Python's numbers abstract base class +import numbers +numbers.Complex.register(ComplexNumber) diff --git a/src/sage/rings/numbers_abc.py b/src/sage/rings/numbers_abc.py index 17290651196..478a0b36408 100644 --- a/src/sage/rings/numbers_abc.py +++ b/src/sage/rings/numbers_abc.py @@ -14,8 +14,6 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -import numbers - def register_sage_classes(): """ @@ -65,23 +63,5 @@ def register_sage_classes(): sage: isscalar(4/17) True """ - from sage.rings.integer import Integer - from sage.rings.rational import Rational - from sage.rings.real_mpfr import RealNumber - from sage.rings.real_double import RealDoubleElement - from sage.rings.complex_mpfr import ComplexNumber - from sage.rings.complex_double import ComplexDoubleElement - from sage.rings.complex_mpc import MPComplexNumber - from sage.rings.qqbar import AlgebraicReal, AlgebraicNumber - - numbers.Integral.register(Integer) - numbers.Rational.register(Rational) - numbers.Real.register(RealNumber) - numbers.Real.register(RealDoubleElement) - numbers.Real.register(AlgebraicReal) - numbers.Complex.register(ComplexNumber) - numbers.Complex.register(MPComplexNumber) - numbers.Complex.register(ComplexDoubleElement) - numbers.Complex.register(AlgebraicNumber) - -register_sage_classes() + from sage.misc.superseded import deprecation + deprecation(32641, "register_sage_classes is a deprecated no-op") diff --git a/src/sage/rings/qqbar.py b/src/sage/rings/qqbar.py index ae926cde625..2cc17707a47 100644 --- a/src/sage/rings/qqbar.py +++ b/src/sage/rings/qqbar.py @@ -8546,3 +8546,9 @@ def get_AA_golden_ratio(): AA_golden_ratio_generator = AlgebraicGenerator(AA_golden_ratio_nf, ANRoot(AAPoly.gen()**2 - AAPoly.gen() - 1, RIF(1.618, 1.6181))) AA_golden_ratio = AlgebraicReal(ANExtensionElement(AA_golden_ratio_generator, AA_golden_ratio_nf.gen())) return AA_golden_ratio + + +# Support Python's numbers abstract base class +import numbers +numbers.Real.register(AlgebraicReal) +numbers.Complex.register(AlgebraicNumber) diff --git a/src/sage/rings/real_double.pyx b/src/sage/rings/real_double.pyx index 405153db6b9..b22897510c0 100644 --- a/src/sage/rings/real_double.pyx +++ b/src/sage/rings/real_double.pyx @@ -2943,3 +2943,8 @@ cdef double_repr(double x): if v < 0: return "-infinity" return "NaN" + + +# Support Python's numbers abstract base class +import numbers +numbers.Real.register(RealDoubleElement) diff --git a/src/sage/rings/real_mpfr.pyx b/src/sage/rings/real_mpfr.pyx index 774ab916659..a5bfcc070e8 100644 --- a/src/sage/rings/real_mpfr.pyx +++ b/src/sage/rings/real_mpfr.pyx @@ -6122,3 +6122,8 @@ def create_RealField(*args, **kwds): deprecation(24511, "Please import create_RealField from sage.rings.real_field") from sage.rings.real_field import create_RealField as cr return cr(*args, **kwds) + + +# Support Python's numbers abstract base class +import numbers +numbers.Real.register(RealNumber)