diff --git a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py index 3b92c79eee7..b4efa9c5f39 100644 --- a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py @@ -5893,8 +5893,7 @@ def sigma_invariants(self, n, formal=False, embedding=None, type='point', base_ring = base_ring.base_ring() elif base_ring in FunctionFields(): base_ring = base_ring.constant_base_field() - from sage.rings.number_field.order import is_NumberFieldOrder - if not (base_ring in NumberFields() or is_NumberFieldOrder(base_ring) + if not (base_ring in NumberFields() or base_ring == ZZ or isinstance(base_ring, sage.rings.abc.Order) or (base_ring in FiniteFields())): raise NotImplementedError("incompatible base field, see documentation") diff --git a/src/sage/rings/finite_rings/residue_field.pyx b/src/sage/rings/finite_rings/residue_field.pyx index 83d78abb2aa..e4e617a33eb 100644 --- a/src/sage/rings/finite_rings/residue_field.pyx +++ b/src/sage/rings/finite_rings/residue_field.pyx @@ -184,7 +184,7 @@ from sage.rings.finite_rings.finite_field_constructor import zech_log_bound, Fin from sage.rings.finite_rings.finite_field_prime_modn import FiniteField_prime_modn from sage.rings.ideal import is_Ideal from sage.rings.number_field.number_field_element_base import NumberFieldElement_base -from sage.rings.number_field.number_field_ideal import is_NumberFieldIdeal +from sage.rings.number_field.number_field_ideal import NumberFieldIdeal from sage.rings.fraction_field import is_FractionField @@ -345,7 +345,7 @@ class ResidueFieldFactory(UniqueFactory): if not p.ring().base_ring().is_prime_field(): # neither of these will work over non-prime fields quite yet. We should use relative finite field extensions. raise NotImplementedError - elif not (is_NumberFieldIdeal(p) or p.ring() is ZZ): + elif not (isinstance(p, NumberFieldIdeal) or p.ring() is ZZ): raise NotImplementedError if isinstance(names, tuple): if names: @@ -411,7 +411,7 @@ class ResidueFieldFactory(UniqueFactory): raise ValueError("unrecognized finite field type") # Should generalize to allowing residue fields of relative extensions to be extensions of finite fields. - if is_NumberFieldIdeal(p): + if isinstance(p, NumberFieldIdeal): characteristic = p.smallest_integer() else: # ideal of a function field characteristic = pring.base_ring().characteristic() diff --git a/src/sage/rings/number_field/number_field.py b/src/sage/rings/number_field/number_field.py index e13806ad619..6fdc550ffe9 100644 --- a/src/sage/rings/number_field/number_field.py +++ b/src/sage/rings/number_field/number_field.py @@ -81,7 +81,7 @@ import sage.libs.ntl.all as ntl - +import sage.rings.abc import sage.rings.complex_mpfr from sage.rings.polynomial.polynomial_element import Polynomial import sage.rings.real_mpfr @@ -212,7 +212,7 @@ def proof_flag(t): from sage.structure.factory import UniqueFactory from . import number_field_element from . import number_field_element_quadratic -from .number_field_ideal import is_NumberFieldIdeal, NumberFieldFractionalIdeal +from .number_field_ideal import NumberFieldIdeal, NumberFieldFractionalIdeal from sage.libs.pari.all import pari, pari_gen from sage.rings.rational_field import QQ @@ -1018,6 +1018,9 @@ def is_AbsoluteNumberField(x): sage: from sage.rings.number_field.number_field import is_AbsoluteNumberField sage: x = polygen(ZZ, 'x') sage: is_AbsoluteNumberField(NumberField(x^2 + 1, 'a')) + doctest:warning... + DeprecationWarning: The function is_AbsoluteNumberField is deprecated; use 'isinstance(..., NumberField_absolute)' instead. + See https://github.com/sagemath/sage/issues/38124 for details. True sage: is_AbsoluteNumberField(NumberField([x^3 + 17, x^2 + 1], 'a')) False @@ -1030,6 +1033,10 @@ def is_AbsoluteNumberField(x): sage: is_AbsoluteNumberField(QQ) False """ + from sage.misc.superseded import deprecation + deprecation(38124, + "The function is_AbsoluteNumberField is deprecated; " + "use 'isinstance(..., NumberField_absolute)' instead.") return isinstance(x, NumberField_absolute) @@ -6953,8 +6960,7 @@ def residue_field(self, prime, names=None, check=True): ... ValueError: Fractional ideal (5) is not a prime ideal """ - from sage.rings.number_field.number_field_ideal import is_NumberFieldIdeal - if is_NumberFieldIdeal(prime) and prime.number_field() is not self: + if isinstance(prime, NumberFieldIdeal) and prime.number_field() is not self: raise ValueError("%s is not an ideal of %s" % (prime, self)) # This allows principal ideals to be specified using a generator: try: @@ -6962,7 +6968,7 @@ def residue_field(self, prime, names=None, check=True): except TypeError: pass - if not is_NumberFieldIdeal(prime) or prime.number_field() is not self: + if not isinstance(prime, NumberFieldIdeal) or prime.number_field() is not self: raise ValueError("%s is not an ideal of %s" % (prime, self)) if check and not prime.is_prime(): raise ValueError("%s is not a prime ideal" % prime) @@ -7088,7 +7094,7 @@ def uniformizer(self, P, others="positive"): sage: x in (t^2 + 3*t +1, t^2 - 4*t +1) True """ - if not is_NumberFieldIdeal(P): + if not isinstance(P, NumberFieldIdeal): P = self.ideal(P) P = P.pari_prime() if others == "positive": @@ -8444,10 +8450,9 @@ def _coerce_map_from_(self, R): """ if R is int: return self._generic_coerce_map(R) - elif R in (ZZ, QQ, self.base()): + if R in (ZZ, QQ, self.base()): return self._generic_coerce_map(R) - from sage.rings.number_field.order import is_NumberFieldOrder - if is_NumberFieldOrder(R) and self.has_coerce_map_from(R.number_field()): + if isinstance(R, sage.rings.abc.Order) and self.has_coerce_map_from(R.number_field()): return self._generic_coerce_map(R) # R is not QQ by the above tests if isinstance(R, number_field_base.NumberField) and R.coerce_embedding() is not None: @@ -10348,7 +10353,7 @@ def hilbert_symbol(self, a, b, P=None): if P(a) > 0 or P(b) > 0: return 1 return -1 - if not is_NumberFieldIdeal(P): + if not isinstance(P, NumberFieldIdeal): P = self.ideal(P) if P.number_field() is not self: raise ValueError("P (=%s) should be an ideal of self (=%s) in hilbert_symbol, not of %s" % (P, self, P.number_field())) diff --git a/src/sage/rings/number_field/number_field_element.pyx b/src/sage/rings/number_field/number_field_element.pyx index 844a4ec3162..1b682403909 100644 --- a/src/sage/rings/number_field/number_field_element.pyx +++ b/src/sage/rings/number_field/number_field_element.pyx @@ -50,6 +50,7 @@ from sage.libs.gmp.pylong cimport mpz_pythonhash from cpython.object cimport Py_EQ, Py_NE, Py_LT, Py_GT, Py_LE, Py_GE from sage.structure.richcmp cimport rich_to_bool +import sage.rings.abc import sage.rings.polynomial.polynomial_element from sage.rings.polynomial.evaluation_ntl cimport ZZX_evaluation_mpfi import sage.rings.rational_field @@ -1663,8 +1664,8 @@ cdef class NumberFieldElement(NumberFieldElement_base): if not isinstance(L, NumberField): raise ValueError("L (=%s) must be a NumberField in is_norm" % L) - from sage.rings.number_field.number_field import is_AbsoluteNumberField - if is_AbsoluteNumberField(L): + from sage.rings.number_field.number_field import NumberField_absolute + if isinstance(L, NumberField_absolute): Lrel = L.relativize(K.hom(L), L.variable_name() + '0') b, x = self.is_norm(Lrel, element=True, proof=proof) h = Lrel.structure()[0] @@ -1803,8 +1804,8 @@ cdef class NumberFieldElement(NumberFieldElement_base): - Francis Clarke (2010-12-26) """ K = self.parent() - from sage.rings.number_field.number_field_rel import is_RelativeNumberField - if (not is_RelativeNumberField(L)) or L.base_field() != K: + from sage.rings.number_field.number_field_rel import NumberField_relative + if not isinstance(L, NumberField_relative) or L.base_field() != K: raise ValueError("L (=%s) must be a relative number field with base field K (=%s) in rnfisnorm" % (L, K)) rnf_data = K.pari_rnfnorm_data(L, proof=proof) @@ -1988,8 +1989,7 @@ cdef class NumberFieldElement(NumberFieldElement_base): raise ArithmeticError("factorization of 0 is not defined") K = self.parent() - from sage.rings.number_field.order import is_NumberFieldOrder - if is_NumberFieldOrder(K): + if isinstance(K, sage.rings.abc.Order): K = K.number_field() fac = K.ideal(self).factor() # Check whether all prime ideals in `fac` are principal @@ -2088,8 +2088,7 @@ cdef class NumberFieldElement(NumberFieldElement_base): if R.is_field(): return R.one() - from sage.rings.number_field.order import is_NumberFieldOrder - if not is_NumberFieldOrder(R): + if not isinstance(R, sage.rings.abc.Order): raise NotImplementedError("gcd() for %r is not implemented" % R) K = R.number_field() @@ -3914,8 +3913,8 @@ cdef class NumberFieldElement(NumberFieldElement_base): ... ValueError: P must be prime """ - from sage.rings.number_field.number_field_ideal import is_NumberFieldIdeal - if not is_NumberFieldIdeal(P): + from sage.rings.number_field.number_field_ideal import NumberFieldIdeal + if not isinstance(P, NumberFieldIdeal): if isinstance(P, NumberFieldElement): P = self.number_field().fractional_ideal(P) else: diff --git a/src/sage/rings/number_field/number_field_ideal.py b/src/sage/rings/number_field/number_field_ideal.py index 36e568fbe96..a9f87ae1836 100644 --- a/src/sage/rings/number_field/number_field_ideal.py +++ b/src/sage/rings/number_field/number_field_ideal.py @@ -1789,6 +1789,10 @@ def is_NumberFieldIdeal(x): sage: from sage.rings.number_field.number_field_ideal import is_NumberFieldIdeal sage: is_NumberFieldIdeal(2/3) + doctest:warning... + DeprecationWarning: The function is_NumberFieldIdeal is deprecated; + use 'isinstance(..., NumberFieldIdeal)' instead. + See https://github.com/sagemath/sage/issues/38124 for details. False sage: is_NumberFieldIdeal(ideal(5)) False @@ -1804,6 +1808,10 @@ def is_NumberFieldIdeal(x): sage: is_NumberFieldIdeal(Z) True """ + from sage.misc.superseded import deprecation + deprecation(38124, + "The function is_NumberFieldIdeal is deprecated; " + "use 'isinstance(..., NumberFieldIdeal)' instead.") return isinstance(x, NumberFieldIdeal) @@ -3316,6 +3324,10 @@ def is_NumberFieldFractionalIdeal(x): sage: from sage.rings.number_field.number_field_ideal import is_NumberFieldFractionalIdeal sage: is_NumberFieldFractionalIdeal(2/3) + doctest:warning... + DeprecationWarning: The function is_NumberFieldFractionalIdeal is deprecated; + use 'isinstance(..., NumberFieldFractionalIdeal)' instead. + See https://github.com/sagemath/sage/issues/38124 for details. False sage: is_NumberFieldFractionalIdeal(ideal(5)) False @@ -3330,6 +3342,10 @@ def is_NumberFieldFractionalIdeal(x): sage: is_NumberFieldFractionalIdeal(Z) False """ + from sage.misc.superseded import deprecation + deprecation(38124, + "The function is_NumberFieldFractionalIdeal is deprecated; " + "use 'isinstance(..., NumberFieldFractionalIdeal)' instead.") return isinstance(x, NumberFieldFractionalIdeal) diff --git a/src/sage/rings/number_field/number_field_ideal_rel.py b/src/sage/rings/number_field/number_field_ideal_rel.py index 7c0e4daa7a2..bb74b64a8e6 100644 --- a/src/sage/rings/number_field/number_field_ideal_rel.py +++ b/src/sage/rings/number_field/number_field_ideal_rel.py @@ -891,6 +891,10 @@ def is_NumberFieldFractionalIdeal_rel(x): sage: from sage.rings.number_field.number_field_ideal_rel import is_NumberFieldFractionalIdeal_rel sage: from sage.rings.number_field.number_field_ideal import is_NumberFieldFractionalIdeal sage: is_NumberFieldFractionalIdeal_rel(2/3) + doctest:warning... + DeprecationWarning: The function is_NumberFieldFractionalIdeal_rel is deprecated; + use 'isinstance(..., NumberFieldFractionalIdeal_rel' instead. + See https://github.com/sagemath/sage/issues/38124 for details. False sage: is_NumberFieldFractionalIdeal_rel(ideal(5)) False @@ -911,7 +915,9 @@ def is_NumberFieldFractionalIdeal_rel(x): Fractional ideal (-a) sage: is_NumberFieldFractionalIdeal_rel(N) False - sage: is_NumberFieldFractionalIdeal(N) - True """ + from sage.misc.superseded import deprecation + deprecation(38124, + "The function is_NumberFieldFractionalIdeal_rel is deprecated; " + "use 'isinstance(..., NumberFieldFractionalIdeal_rel' instead.") return isinstance(x, NumberFieldFractionalIdeal_rel) diff --git a/src/sage/rings/number_field/number_field_rel.py b/src/sage/rings/number_field/number_field_rel.py index 7d7c150d9d0..c5e5548f43f 100644 --- a/src/sage/rings/number_field/number_field_rel.py +++ b/src/sage/rings/number_field/number_field_rel.py @@ -80,6 +80,7 @@ from sage.categories.map import is_Map from sage.structure.sequence import Sequence +import sage.rings.abc import sage.structure.parent_gens from . import maps @@ -93,12 +94,12 @@ from . import number_field_element import sage.rings.number_field.number_field_ideal_rel -from .number_field_ideal import is_NumberFieldIdeal +from .number_field_ideal import NumberFieldIdeal from .number_field import (NumberField, NumberField_generic, put_natural_embedding_first, proof_flag, is_NumberFieldHomsetCodomain) from sage.rings.number_field.number_field_base import NumberField as NumberField_base -from sage.rings.number_field.order import (RelativeOrder, is_NumberFieldOrder, +from sage.rings.number_field.order import (RelativeOrder, relative_order_from_ring_generators) from sage.rings.number_field.morphism import RelativeNumberFieldHomomorphism_from_abs from sage.libs.pari.all import pari_gen @@ -122,6 +123,10 @@ def is_RelativeNumberField(x): sage: from sage.rings.number_field.number_field_rel import is_RelativeNumberField sage: x = polygen(ZZ, 'x') sage: is_RelativeNumberField(NumberField(x^2+1,'a')) + doctest:warning... + DeprecationWarning: The function is_RelativeNumberField is deprecated; + use 'isinstance(..., NumberField_relative)' instead. + See https://github.com/sagemath/sage/issues/38124 for details. False sage: k. = NumberField(x^3 - 2) sage: l. = k.extension(x^3 - 3); l @@ -131,6 +136,10 @@ def is_RelativeNumberField(x): sage: is_RelativeNumberField(QQ) False """ + from sage.misc.superseded import deprecation + deprecation(38124, + "The function is_RelativeNumberField is deprecated; " + "use 'isinstance(..., NumberField_relative)' instead.") return isinstance(x, NumberField_relative) @@ -1013,9 +1022,9 @@ def _coerce_map_from_(self, R): """ if R is int: return self._generic_coerce_map(R) - elif R in (ZZ, QQ, self.base_field()): + if R in (ZZ, QQ, self.base_field()): return self._generic_coerce_map(R) - if is_NumberFieldOrder(R) and R.number_field() is self: + if isinstance(R, sage.rings.abc.Order) and R.number_field() is self: return self._generic_coerce_map(R) mor = self.base_field()._internal_coerce_map_from(R) if mor is not None: @@ -1310,7 +1319,7 @@ def is_isomorphic_relative(self, other, base_isom=None): Ring endomorphism of Number Field in z9 with defining polynomial x^6 + x^3 + 1 Defn: z9 |--> z9^4 """ - if is_RelativeNumberField(other): + if isinstance(other, NumberField_relative): s_base_field = self.base_field() o_base_field = other.base_field() if base_isom is None: @@ -2722,7 +2731,7 @@ def uniformizer(self, P, others="positive"): sage: (P, 1) in K.factor(u) True """ - if not is_NumberFieldIdeal(P): + if not isinstance(P, NumberFieldIdeal): P = self.ideal(P) if not P.is_maximal(): raise ValueError("P (=%s) must be a nonzero prime." % P) diff --git a/src/sage/rings/number_field/order.py b/src/sage/rings/number_field/order.py index 94d0732704d..f5d51d955cf 100644 --- a/src/sage/rings/number_field/order.py +++ b/src/sage/rings/number_field/order.py @@ -362,7 +362,11 @@ def is_NumberFieldOrder(R): sage: from sage.rings.number_field.order import is_NumberFieldOrder sage: x = polygen(ZZ, 'x') - sage: is_NumberFieldOrder(NumberField(x^2 + 1,'a').maximal_order()) + sage: is_NumberFieldOrder(NumberField(x^2 + 1, 'a').maximal_order()) + doctest:warning... + DeprecationWarning: The function is_NumberFieldOrder is deprecated; + use 'isinstance(..., sage.rings.abc.Order) or ... == ZZ' instead. + See https://github.com/sagemath/sage/issues/38124 for details. True sage: is_NumberFieldOrder(ZZ) True @@ -371,6 +375,10 @@ def is_NumberFieldOrder(R): sage: is_NumberFieldOrder(45) False """ + from sage.misc.superseded import deprecation + deprecation(38124, + "The function is_NumberFieldOrder is deprecated; " + "use 'isinstance(..., sage.rings.abc.Order) or ... == ZZ' instead.") return isinstance(R, Order) or R == ZZ @@ -2842,7 +2850,7 @@ def absolute_order_from_module_generators(gens, raise ValueError("each generator must be integral") K = gens.universe() - if is_NumberFieldOrder(K): + if isinstance(K, Order) or K == ZZ: K = K.number_field() V, from_V, to_V = K.vector_space() mod_gens = [to_V(x) for x in gens] diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx index 7bb968c3121..454dd007f98 100644 --- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx +++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx @@ -231,7 +231,6 @@ from sage.rings.integer_ring import is_IntegerRing, ZZ from sage.rings.integer cimport Integer from sage.rings.number_field.number_field_base cimport NumberField -from sage.rings.number_field.order import is_NumberFieldOrder from sage.categories.number_fields import NumberFields from sage.structure.element import coerce_binop @@ -5614,7 +5613,7 @@ cdef class MPolynomial_libsingular(MPolynomial_libsingular_base): return RealField(prec).zero() K = self.base_ring() - if K in NumberFields() or is_NumberFieldOrder(K): + if K in NumberFields() or isinstance(K, sage.rings.abc.Order) or K == ZZ: f = self else: raise TypeError("Must be over a Numberfield or a Numberfield Order.") @@ -5666,7 +5665,7 @@ cdef class MPolynomial_libsingular(MPolynomial_libsingular_base): prec = 53 K = FractionField(self.base_ring()) - if K not in NumberFields() or is_NumberFieldOrder(K): + if K not in NumberFields() and not isinstance(K, sage.rings.abc.Order) and K != ZZ: raise TypeError("must be over a Numberfield or a Numberfield order") return max([K(c).local_height(v, prec=prec) for c in self.coefficients()]) @@ -5710,7 +5709,7 @@ cdef class MPolynomial_libsingular(MPolynomial_libsingular_base): 1.0 """ K = FractionField(self.base_ring()) - if K not in NumberFields() or is_NumberFieldOrder(K): + if K not in NumberFields() and not isinstance(K, sage.rings.abc.Order) and K != ZZ: return TypeError("must be over a Numberfield or a Numberfield Order") if K == QQ: diff --git a/src/sage/rings/polynomial/polynomial_element.pyx b/src/sage/rings/polynomial/polynomial_element.pyx index 67f7f4c95e4..48001e11cb0 100644 --- a/src/sage/rings/polynomial/polynomial_element.pyx +++ b/src/sage/rings/polynomial/polynomial_element.pyx @@ -5841,8 +5841,6 @@ cdef class Polynomial(CommutativePolynomial): if self.degree() <= 1: return R.fraction_field() - from sage.rings.number_field.number_field import is_NumberField, NumberField - if is_IntegerRing(R): from sage.rings.number_field.number_field import NumberField return NumberField(self, names) diff --git a/src/sage/rings/polynomial/polynomial_quotient_ring_element.py b/src/sage/rings/polynomial/polynomial_quotient_ring_element.py index 31cf61e3811..f6eb840ff91 100644 --- a/src/sage/rings/polynomial/polynomial_quotient_ring_element.py +++ b/src/sage/rings/polynomial/polynomial_quotient_ring_element.py @@ -565,8 +565,8 @@ def field_extension(self, names): f = R.hom([alpha], F, check=False) - import sage.rings.number_field.number_field_rel as number_field_rel - if number_field_rel.is_RelativeNumberField(F): + from sage.rings.number_field.number_field_rel import NumberField_relative + if isinstance(F, NumberField_relative): base_map = F.base_field().hom([R.base_ring().gen()]) g = F.Hom(R)(x, base_map) diff --git a/src/sage/schemes/elliptic_curves/ell_local_data.py b/src/sage/schemes/elliptic_curves/ell_local_data.py index 5375f24cad6..015cba10763 100644 --- a/src/sage/schemes/elliptic_curves/ell_local_data.py +++ b/src/sage/schemes/elliptic_curves/ell_local_data.py @@ -100,7 +100,7 @@ from sage.rings.rational_field import QQ from sage.rings.integer_ring import ZZ from sage.rings.integer import Integer -from sage.rings.number_field.number_field_ideal import is_NumberFieldFractionalIdeal +from sage.rings.number_field.number_field_ideal import NumberFieldFractionalIdeal from sage.rings.number_field.number_field_base import NumberField from sage.rings.ideal import is_Ideal @@ -1197,7 +1197,7 @@ def check_prime(K, P): if not isinstance(K, NumberField): raise TypeError("%s is not a number field" % (K,)) - if is_NumberFieldFractionalIdeal(P) or P in K: + if isinstance(P, NumberFieldFractionalIdeal) or P in K: # if P is an ideal, making sure it is a fractional ideal of K P = K.fractional_ideal(P) if P.is_prime(): diff --git a/src/sage/schemes/projective/projective_point.py b/src/sage/schemes/projective/projective_point.py index 10dd6c5efe6..1efc16af934 100644 --- a/src/sage/schemes/projective/projective_point.py +++ b/src/sage/schemes/projective/projective_point.py @@ -31,7 +31,7 @@ _NumberFields = NumberFields() from sage.rings.integer_ring import ZZ from sage.rings.fraction_field import FractionField -from sage.rings.number_field.order import is_NumberFieldOrder, Order as NumberFieldOrder +from sage.rings.number_field.order import Order as NumberFieldOrder from sage.rings.qqbar import number_field_elements_from_algebraics from sage.rings.quotient_ring import QuotientRing_generic from sage.rings.rational_field import QQ @@ -749,7 +749,7 @@ def global_height(self, prec=None): if prec is None: prec = 53 K = self.codomain().base_ring() - if K in _NumberFields or is_NumberFieldOrder(K): + if K in _NumberFields or isinstance(K, NumberFieldOrder) or K == ZZ: P = self else: try: