Skip to content
Prev Previous commit
Next Next commit
sage.rings.number_field: Deprecate is_NumberFieldOrder
  • Loading branch information
Matthias Koeppe committed Jun 1, 2024
commit b0041f049ee4ae1209c0c5958b0c5d2b69485427
7 changes: 3 additions & 4 deletions src/sage/rings/number_field/number_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -8444,10 +8444,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:
Expand Down
7 changes: 3 additions & 4 deletions src/sage/rings/number_field/number_field_element.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down
7 changes: 4 additions & 3 deletions src/sage/rings/number_field/number_field_rel.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -98,7 +99,7 @@
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
Expand Down Expand Up @@ -1013,9 +1014,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:
Expand Down
12 changes: 10 additions & 2 deletions src/sage/rings/number_field/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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


Expand Down Expand Up @@ -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]
Expand Down