Skip to content

Commit 1cc09cc

Browse files
author
Matthias Koeppe
committed
Replace some imports of NumberFieldElement classes by ABC
1 parent a9dacbe commit 1cc09cc

File tree

5 files changed

+24
-14
lines changed

5 files changed

+24
-14
lines changed

src/sage/interfaces/maxima_lib.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,8 @@ def reduce_load_MaximaLib():
11641164
import sage.rings.real_double
11651165
import sage.symbolic.expression
11661166
import sage.symbolic.integration.integral
1167+
1168+
from sage.structure.element import NumberFieldElement
11671169
from sage.symbolic.operators import FDerivativeOperator, add_vararg, mul_vararg
11681170

11691171
car=EclObject("car")
@@ -1523,9 +1525,11 @@ def pyobject_to_max(obj):
15231525
"""
15241526
if isinstance(obj,sage.rings.rational.Rational):
15251527
return EclObject(obj) if (obj.denom().is_one()) else EclObject([[rat], obj.numer(),obj.denom()])
1526-
elif isinstance(obj,sage.rings.number_field.number_field_element_quadratic.NumberFieldElement_quadratic) and obj.parent().defining_polynomial().list() == [1,0,1]:
1527-
re, im = obj.list()
1528-
return EclObject([[mplus], pyobject_to_max(re), [[mtimes], pyobject_to_max(im), max_i]])
1528+
elif isinstance(obj, NumberFieldElement):
1529+
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_quadratic
1530+
if isinstance(obj, NumberFieldElement_quadratic) and obj.parent().defining_polynomial().list() == [1,0,1]:
1531+
re, im = obj.list()
1532+
return EclObject([[mplus], pyobject_to_max(re), [[mtimes], pyobject_to_max(im), max_i]])
15291533
return EclObject(obj)
15301534

15311535
# This goes from SR to EclObject

src/sage/rings/integer_ring.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ from sage.categories.basic import EuclideanDomains
6060
from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
6161
from sage.structure.coerce cimport is_numpy_type
6262
from sage.structure.element cimport parent
63+
from sage.structure.element import NumberFieldElement
6364
from sage.structure.parent_gens import ParentWithGens
6465
from sage.structure.parent cimport Parent
6566
from sage.structure.richcmp cimport rich_to_bool
@@ -414,7 +415,6 @@ cdef class IntegerRing_class(PrincipalIdealDomain):
414415
if x in self:
415416
return self
416417

417-
from sage.rings.number_field.number_field_element import NumberFieldElement
418418
if isinstance(x, NumberFieldElement):
419419
K, from_K = parent(x).subfield(x)
420420
return K.order(K.gen())

src/sage/rings/universal_cyclotomic_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@
167167

168168
from sage.structure.richcmp import rich_to_bool
169169
from sage.structure.unique_representation import UniqueRepresentation
170-
from sage.structure.element import FieldElement, parent
170+
from sage.structure.element import FieldElement, parent, NumberFieldElement
171+
171172
from sage.structure.coerce import py_scalar_to_element
172173
from sage.categories.morphism import Morphism
173174
from sage.rings.ring import Field
@@ -1537,7 +1538,6 @@ def _element_constructor_(self, elt):
15371538
import sage.rings.abc
15381539
P = parent(elt)
15391540
if isinstance(P, sage.rings.abc.NumberField_cyclotomic):
1540-
from sage.rings.number_field.number_field_element import NumberFieldElement
15411541
if isinstance(elt, NumberFieldElement):
15421542
from sage.rings.number_field.number_field import CyclotomicField
15431543
n = P.gen().multiplicative_order()

src/sage/schemes/elliptic_curves/cm.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
PolynomialRing)
4343

4444
from sage.misc.cachefunc import cached_function
45+
from sage.structure.element import NumberFieldElement
46+
4547

4648
@cached_function
4749
def hilbert_class_polynomial(D, algorithm=None):
@@ -623,7 +625,6 @@ def is_cm_j_invariant(j, method='new'):
623625
True
624626
"""
625627
# First we check that j is an algebraic number:
626-
from sage.rings.all import NumberFieldElement, NumberField
627628
if not isinstance(j, NumberFieldElement) and j not in QQ:
628629
raise NotImplementedError("is_cm_j_invariant() is only implemented for number field elements")
629630

@@ -670,6 +671,8 @@ def is_cm_j_invariant(j, method='new'):
670671

671672
K = j.parent()
672673
if h < K.absolute_degree():
674+
from sage.rings.number_field.number_field import NumberField
675+
673676
K = NumberField(jpol, 'j')
674677
j = K.gen()
675678

src/sage/symbolic/expression_conversions.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@
2020

2121
from sage.rings.rational_field import QQ
2222
from sage.symbolic.ring import SR
23-
from sage.structure.element import Expression
23+
from sage.structure.element import Expression, NumberFieldElement
2424
from sage.functions.all import exp
2525
from sage.symbolic.operators import arithmetic_operators, relation_operators, FDerivativeOperator, add_vararg, mul_vararg
26-
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_gaussian
2726
from sage.rings.universal_cyclotomic_field import UniversalCyclotomicField
2827

2928

@@ -441,9 +440,10 @@ def pyobject(self, ex, obj):
441440
sage: ii.pyobject(pi, pi.pyobject())
442441
'Pi'
443442
"""
444-
if (self.interface.name() in ['pari', 'gp'] and
445-
isinstance(obj, NumberFieldElement_gaussian)):
446-
return repr(obj)
443+
if (self.interface.name() in ['pari', 'gp'] and isinstance(obj, NumberFieldElement)):
444+
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_gaussian
445+
if isinstance(obj, NumberFieldElement_gaussian):
446+
return repr(obj)
447447
try:
448448
return getattr(obj, self.name_init)()
449449
except AttributeError:
@@ -1020,10 +1020,13 @@ def pyobject(self, ex, obj):
10201020
"""
10211021
try:
10221022
result = getattr(obj, self.name_init)()
1023-
if isinstance(obj, NumberFieldElement_gaussian):
1024-
return "((%s)::EXPR COMPLEX INT)" % result
10251023
except AttributeError:
10261024
result = repr(obj)
1025+
else:
1026+
if isinstance(obj, NumberFieldElement):
1027+
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_gaussian
1028+
if isinstance(obj, NumberFieldElement_gaussian):
1029+
return "((%s)::EXPR COMPLEX INT)" % result
10271030
return "((%s)::EXPR INT)" % result
10281031

10291032
def symbol(self, ex):

0 commit comments

Comments
 (0)