Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit 81e875b

Browse files
author
Matthias Koeppe
committedJan 24, 2023

File tree

6 files changed

+40
-7
lines changed

6 files changed

+40
-7
lines changed
 

‎src/sage/rings/finite_rings/residue_field.pyx

+2-3
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,8 @@ from sage.rings.finite_rings.finite_field_ntl_gf2e import FiniteField_ntl_gf2e
160160
from sage.rings.finite_rings.finite_field_prime_modn import FiniteField_prime_modn
161161
from sage.rings.finite_rings.finite_field_pari_ffelt import FiniteField_pari_ffelt
162162
from sage.rings.ideal import is_Ideal
163-
from sage.structure.element cimport Element
163+
from sage.structure.element cimport Element, NumberFieldElement
164164

165-
from sage.rings.number_field.number_field_element import is_NumberFieldElement
166165
from sage.rings.number_field.number_field_ideal import is_NumberFieldIdeal
167166

168167
from sage.modules.free_module_element import FreeModuleElement
@@ -295,7 +294,7 @@ class ResidueFieldFactory(UniqueFactory):
295294
if not is_Ideal(p):
296295
if isinstance(p, (int, Integer, Rational)):
297296
p = ZZ.ideal(p)
298-
elif is_NumberFieldElement(p):
297+
elif isinstance(p, NumberFieldElement):
299298
if p.parent().is_field():
300299
p = p.parent().ring_of_integers().ideal(p)
301300
else:

‎src/sage/rings/number_field/number_field_element.pxd

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ from sage.libs.gmp.types cimport mpz_t
33
from sage.rings.integer cimport Integer
44
from sage.rings.polynomial.polynomial_element cimport Polynomial
55
from sage.structure.element cimport FieldElement, RingElement, ModuleElement
6+
from sage.structure.element cimport NumberFieldElement as NumberFieldElement_base
67
from sage.structure.parent cimport Parent
78
from sage.structure.parent_base cimport ParentWithBase
89
from sage.libs.ntl.types cimport ZZ_c, ZZX_c
910
from sage.libs.ntl.ntl_ZZX cimport ntl_ZZX
1011
from sage.libs.ntl.ntl_ZZ cimport ntl_ZZ
1112

12-
cdef class NumberFieldElement(FieldElement):
13+
14+
cdef class NumberFieldElement(NumberFieldElement_base):
1315
cdef ZZX_c __numerator
1416
cdef ZZ_c __denominator
1517
# Pointers to the defining polynomial (with numerator) for the field.

‎src/sage/rings/number_field/number_field_element.pyx

+6-2
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ def is_NumberFieldElement(x):
113113
sage: is_NumberFieldElement(a+1)
114114
True
115115
"""
116+
from sage.misc.superseded import deprecation
117+
deprecation(34931,
118+
'is_NumberFieldElement is deprecated; '
119+
'use isinstance(..., sage.structure.element.NumberFieldElement) instead')
116120
return isinstance(x, NumberFieldElement)
117121

118122

@@ -190,7 +194,7 @@ def _inverse_mod_generic(elt, I):
190194
return I.small_residue(y)
191195

192196

193-
cdef class NumberFieldElement(FieldElement):
197+
cdef class NumberFieldElement(NumberFieldElement_base):
194198
"""
195199
An element of a number field.
196200
@@ -3855,7 +3859,7 @@ cdef class NumberFieldElement(FieldElement):
38553859
"""
38563860
from .number_field_ideal import is_NumberFieldIdeal
38573861
if not is_NumberFieldIdeal(P):
3858-
if is_NumberFieldElement(P):
3862+
if isinstance(P, NumberFieldElement):
38593863
P = self.number_field().fractional_ideal(P)
38603864
else:
38613865
raise TypeError("P must be an ideal")

‎src/sage/schemes/elliptic_curves/heegner.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
from sage.misc.verbose import verbose
9898
from sage.misc.cachefunc import cached_method
9999

100+
from sage.structure.element import NumberFieldElement
100101
from sage.structure.sage_object import SageObject
101102
from sage.structure.richcmp import (richcmp_method, richcmp,
102103
richcmp_not_equal, rich_to_bool)
@@ -2679,7 +2680,7 @@ def __init__(self, N, D, c=ZZ(1), f=None, check=True):
26792680
elif isinstance(f, BinaryQF):
26802681
# convert from BinaryQF
26812682
f = tuple(f)
2682-
elif sage.rings.number_field.number_field_element.is_NumberFieldElement(f):
2683+
elif isinstance(f, NumberFieldElement):
26832684
# tau = number field element
26842685
g = f.minpoly()
26852686
if g.degree() != 2:

‎src/sage/structure/element.pxd

+3
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,9 @@ cdef class EuclideanDomainElement(PrincipalIdealDomainElement):
230230
cdef class FieldElement(CommutativeRingElement):
231231
cpdef _floordiv_(self, other)
232232

233+
cdef class NumberFieldElement(FieldElement):
234+
pass
235+
233236
cdef class AlgebraElement(RingElement):
234237
pass
235238

‎src/sage/structure/element.pyx

+24
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ abstract base classes.
4646
PrincipalIdealDomainElement
4747
EuclideanDomainElement
4848
FieldElement
49+
NumberFieldElement
4950
CommutativeAlgebraElement
5051
Expression
5152
AlgebraElement
@@ -4276,6 +4277,29 @@ cdef class FieldElement(CommutativeRingElement):
42764277
other = self.parent()(other)
42774278
return bool(self) or other.is_zero()
42784279

4280+
4281+
cdef class NumberFieldElement(FieldElement):
4282+
r"""
4283+
Abstract base class for :class:`~sage.rings.number_field.number_field_element.NumberFieldElement`
4284+
4285+
This class is defined for the purpose of :func:`isinstance` tests. It should not be
4286+
instantiated.
4287+
4288+
EXAMPLES::
4289+
4290+
sage: sage: k.<a> = NumberField(x^3 + x + 1)
4291+
sage: isinstance(a, sage.structure.element.NumberFieldElement)
4292+
True
4293+
4294+
By design, there is a unique direct subclass::
4295+
4296+
sage: len(sage.structure.element.NumberFieldElement.__subclasses__()) <= 1
4297+
True
4298+
"""
4299+
4300+
pass
4301+
4302+
42794303
def is_AlgebraElement(x):
42804304
"""
42814305
Return ``True`` if x is of type AlgebraElement.

0 commit comments

Comments
 (0)
This repository has been archived.