Skip to content

Commit 89d2a53

Browse files
author
Release Manager
committed
Trac #32742: Use sage.rings.abc.RealField, sage.rings.abc.ComplexField more
As a follow-up on #32566 and #32610, we replace `isinstance` tests with `RealField_class` by the `sage.rings.abc.RealField`. `git grep -E 'isinstance.*(Real|Complex)Field_class'` finds these uses. URL: https://trac.sagemath.org/32742 Reported by: mkoeppe Ticket author(s): Matthias Koeppe Reviewer(s): Travis Scrimshaw
2 parents 9c23f2a + 29e784b commit 89d2a53

18 files changed

+75
-102
lines changed

src/sage/ext/fast_callable.pyx

+11-20
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,7 @@ AUTHOR:
302302

303303
import operator
304304
from copy import copy
305-
from sage.rings.real_mpfr cimport RealField_class, RealNumber
306-
from sage.rings.complex_mpfr import ComplexField_class
307-
from sage.rings.all import RDF, CDF
305+
import sage.rings.abc
308306
from sage.rings.integer import Integer
309307
from sage.rings.integer_ring import ZZ
310308
from sage.structure.element cimport parent
@@ -466,41 +464,34 @@ def fast_callable(x, domain=None, vars=None,
466464
etb = ExpressionTreeBuilder(vars=vars, domain=domain)
467465
et = x._fast_callable_(etb)
468466

469-
if isinstance(domain, RealField_class):
470-
import sage.ext.interpreters.wrapper_rr
471-
builder = sage.ext.interpreters.wrapper_rr.Wrapper_rr
472-
467+
if isinstance(domain, sage.rings.abc.RealField):
468+
from sage.ext.interpreters.wrapper_rr import Wrapper_rr as builder
473469
str = InstructionStream(sage.ext.interpreters.wrapper_rr.metadata,
474470
len(vars),
475471
domain)
476472

477-
elif isinstance(domain, ComplexField_class):
478-
import sage.ext.interpreters.wrapper_cc
479-
builder = sage.ext.interpreters.wrapper_cc.Wrapper_cc
473+
elif isinstance(domain, sage.rings.abc.ComplexField):
474+
from sage.ext.interpreters.wrapper_cc import Wrapper_cc as builder
480475
str = InstructionStream(sage.ext.interpreters.wrapper_cc.metadata,
481476
len(vars),
482477
domain)
483478

484-
elif domain == RDF or domain is float:
485-
import sage.ext.interpreters.wrapper_rdf
486-
builder = sage.ext.interpreters.wrapper_rdf.Wrapper_rdf
479+
elif isinstance(domain, sage.rings.abc.RealDoubleField) or domain is float:
480+
from sage.ext.interpreters.wrapper_rdf import Wrapper_rdf as builder
487481
str = InstructionStream(sage.ext.interpreters.wrapper_rdf.metadata,
488482
len(vars),
489483
domain)
490-
elif domain == CDF:
491-
import sage.ext.interpreters.wrapper_cdf
492-
builder = sage.ext.interpreters.wrapper_cdf.Wrapper_cdf
484+
elif isinstance(domain, sage.rings.abc.ComplexDoubleField):
485+
from sage.ext.interpreters.wrapper_cdf import Wrapper_cdf as builder
493486
str = InstructionStream(sage.ext.interpreters.wrapper_cdf.metadata,
494487
len(vars),
495488
domain)
496489
elif domain is None:
497-
import sage.ext.interpreters.wrapper_py
498-
builder = sage.ext.interpreters.wrapper_py.Wrapper_py
490+
from sage.ext.interpreters.wrapper_py import Wrapper_py as builder
499491
str = InstructionStream(sage.ext.interpreters.wrapper_py.metadata,
500492
len(vars))
501493
else:
502-
import sage.ext.interpreters.wrapper_el
503-
builder = sage.ext.interpreters.wrapper_el.Wrapper_el
494+
from sage.ext.interpreters.wrapper_el import Wrapper_el as builder
504495
str = InstructionStream(sage.ext.interpreters.wrapper_el.metadata,
505496
len(vars),
506497
domain)

src/sage/geometry/voronoi_diagram.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
from sage.geometry.polyhedron.constructor import Polyhedron
1818
from sage.rings.qqbar import AA
1919
from sage.rings.rational_field import QQ
20-
from sage.rings.real_double import RDF
21-
from sage.rings.real_mpfr import RealField_class
20+
import sage.rings.abc
2221
from sage.geometry.triangulation.point_configuration import PointConfiguration
2322
from sage.modules.free_module_element import vector
2423
from sage.plot.all import line, point, rainbow, plot
@@ -103,9 +102,10 @@ def __init__(self, points):
103102
self._n = self._points.n_points()
104103
if not self._n or self._points.base_ring().is_subring(QQ):
105104
self._base_ring = QQ
106-
elif self._points.base_ring() in [RDF, AA]:
105+
elif isinstance(self._points.base_ring(), sage.rings.abc.RealDoubleField) or self._points.base_ring() == AA:
107106
self._base_ring = self._points.base_ring()
108-
elif isinstance(self._points.base_ring(), RealField_class):
107+
elif isinstance(self._points.base_ring(), sage.rings.abc.RealField):
108+
from sage.rings.real_double import RDF
109109
self._base_ring = RDF
110110
self._points = PointConfiguration([[RDF(cor) for cor in poi]
111111
for poi in self._points])

src/sage/groups/lie_gps/nilpotent_lie_group.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from sage.misc.cachefunc import cached_method
2727
from sage.misc.repr import repr_lincomb
2828
from sage.modules.free_module_element import vector
29-
from sage.rings.real_mpfr import RealField_class
29+
import sage.rings.abc
3030
from sage.structure.element import MultiplicativeGroupElement
3131
from sage.symbolic.ring import SR, var
3232

@@ -229,7 +229,7 @@ def __init__(self, L, name, **kwds):
229229
R = L.base_ring()
230230
category = kwds.pop('category', None)
231231
category = LieGroups(R).or_subcategory(category)
232-
if isinstance(R, RealField_class):
232+
if isinstance(R, sage.rings.abc.RealField):
233233
structure = RealDifferentialStructure()
234234
else:
235235
structure = DifferentialStructure()

src/sage/groups/misc_gps/argument_groups.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
from sage.structure.parent import Parent
4747
from sage.structure.richcmp import richcmp_by_eq_and_lt
4848
from sage.structure.unique_representation import UniqueRepresentation
49-
49+
import sage.rings.abc
5050

5151
class AbstractArgument(MultiplicativeGroupElement):
5252
r"""
@@ -1870,13 +1870,13 @@ def create_key_and_extra_args(self,
18701870

18711871
if domain is not None:
18721872
if domain in (ZZ, QQ, AA) \
1873-
or isinstance(domain, (RealField_class,
1874-
RealIntervalField_class,
1875-
RealBallField)):
1873+
or isinstance(domain, (sage.rings.abc.RealField,
1874+
sage.rings.abc.RealIntervalField,
1875+
sage.rings.abc.RealBallField)):
18761876
return (SignGroup, ()), kwds
1877-
elif isinstance(domain, (ComplexField_class,
1878-
ComplexIntervalField_class,
1879-
ComplexBallField)):
1877+
elif isinstance(domain, (sage.rings.abc.ComplexField,
1878+
sage.rings.abc.ComplexIntervalField,
1879+
sage.rings.abc.ComplexBallField)):
18801880
return (UnitCircleGroup, (domain._real_field(),)), kwds
18811881
else:
18821882
return (ArgumentByElementGroup, (domain,)), kwds

src/sage/manifolds/manifold.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,9 @@
328328
from sage.categories.fields import Fields
329329
from sage.categories.manifolds import Manifolds
330330
from sage.categories.homset import Hom
331+
import sage.rings.abc
331332
from sage.rings.all import CC
332-
from sage.rings.real_mpfr import RR, RealField_class
333-
from sage.rings.complex_mpfr import ComplexField_class
333+
from sage.rings.real_mpfr import RR
334334
from sage.misc.prandom import getrandbits
335335
from sage.misc.cachefunc import cached_method
336336
from sage.rings.integer import Integer
@@ -545,9 +545,9 @@ def __init__(self, n, name, field, structure, base_manifold=None,
545545
if field not in Fields():
546546
raise TypeError("the argument 'field' must be a field")
547547
self._field = field
548-
if isinstance(field, RealField_class):
548+
if isinstance(field, sage.rings.abc.RealField):
549549
self._field_type = 'real'
550-
elif isinstance(field, ComplexField_class):
550+
elif isinstance(field, sage.rings.abc.ComplexField):
551551
self._field_type = 'complex'
552552
else:
553553
self._field_type = 'neither_real_nor_complex'
@@ -2957,7 +2957,7 @@ def Manifold(dim, name, latex_name=None, field='real', structure='smooth',
29572957
unique_tag = lambda: getrandbits(128)*_manifold_id
29582958

29592959
if structure in ['topological', 'top']:
2960-
if field == 'real' or isinstance(field, RealField_class):
2960+
if field == 'real' or isinstance(field, sage.rings.abc.RealField):
29612961
structure = RealTopologicalStructure()
29622962
else:
29632963
structure = TopologicalStructure()
@@ -2985,7 +2985,7 @@ def Manifold(dim, name, latex_name=None, field='real', structure='smooth',
29852985
"not compatible with a smooth structure")
29862986
else:
29872987
diff_degree = infinity
2988-
if field == 'real' or isinstance(field, RealField_class):
2988+
if field == 'real' or isinstance(field, sage.rings.abc.RealField):
29892989
structure = RealDifferentialStructure()
29902990
else:
29912991
structure = DifferentialStructure()

src/sage/manifolds/vector_bundle.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@
3737
from sage.structure.category_object import CategoryObject
3838
from sage.categories.vector_bundles import VectorBundles
3939
from sage.structure.unique_representation import UniqueRepresentation
40+
import sage.rings.abc
4041
from sage.rings.all import CC
41-
from sage.rings.real_mpfr import RR, RealField_class
42-
from sage.rings.complex_mpfr import ComplexField_class
42+
from sage.rings.real_mpfr import RR
4343
from sage.rings.integer import Integer
4444
from sage.manifolds.vector_bundle_fiber import VectorBundleFiber
4545

@@ -218,9 +218,9 @@ def __init__(self, rank, name, base_space, field='real',
218218
self._field_type = field
219219
else:
220220
self._field = field
221-
if isinstance(field, RealField_class):
221+
if isinstance(field, sage.rings.abc.RealField):
222222
self._field_type = 'real'
223-
elif isinstance(field, ComplexField_class):
223+
elif isinstance(field, sage.rings.abc.ComplexField):
224224
self._field_type = 'complex'
225225
else:
226226
self._field_type = 'neither_real_nor_complex'

src/sage/matrix/misc.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ from sage.rings.rational_field import QQ
4040
from sage.rings.integer cimport Integer
4141
from sage.arith.all import previous_prime, CRT_basis
4242

43-
from sage.rings.real_mpfr cimport RealField_class
43+
cimport sage.rings.abc
4444
from sage.rings.real_mpfr cimport RealNumber
4545

4646

@@ -510,7 +510,7 @@ def hadamard_row_bound_mpfr(Matrix A):
510510
...
511511
OverflowError: cannot convert float infinity to integer
512512
"""
513-
if not isinstance(A.base_ring(), RealField_class):
513+
if not isinstance(A.base_ring(), sage.rings.abc.RealField):
514514
raise TypeError("A must have base field an mpfr real field.")
515515

516516
cdef RealNumber a, b

src/sage/quadratic_forms/quadratic_form__split_local_covering.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from sage.quadratic_forms.extras import extend_to_primitive
1212
from sage.quadratic_forms.quadratic_form import QuadraticForm__constructor, is_QuadraticForm
1313

14-
from sage.rings.real_mpfr import RealField_class, RealField
14+
import sage.rings.abc
15+
from sage.rings.real_mpfr import RealField
1516
from sage.rings.real_double import RDF
1617
from sage.matrix.matrix_space import MatrixSpace
1718
from sage.matrix.constructor import matrix
@@ -84,7 +85,7 @@ def cholesky_decomposition(self, bit_prec = 53):
8485
"""
8586

8687
## Check that the precision passed is allowed.
87-
if isinstance(self.base_ring(), RealField_class) and (self.base_ring().prec() < bit_prec):
88+
if isinstance(self.base_ring(), sage.rings.abc.RealField) and (self.base_ring().prec() < bit_prec):
8889
raise RuntimeError("Oops! The precision requested is greater than that of the given quadratic form!")
8990

9091
## 1. Initialization

src/sage/rings/asymptotic/asymptotic_ring.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@
418418
from sage.structure.element import CommutativeAlgebraElement
419419
from sage.structure.unique_representation import UniqueRepresentation
420420
from sage.misc.defaults import series_precision
421+
import sage.rings.abc
421422
from sage.rings.all import RIF
422423
from .misc import WithLocals
423424

@@ -2964,8 +2965,7 @@ def plot_comparison(self, variable, function, values, rescaled=True,
29642965
points = self.compare_with_values(variable, function,
29652966
values, rescaled=rescaled, ring=ring)
29662967

2967-
from sage.rings.real_mpfi import RealIntervalField_class
2968-
if isinstance(ring, RealIntervalField_class):
2968+
if isinstance(ring, sage.rings.abc.RealIntervalField):
29692969
if not all(p[1].relative_diameter() <= relative_tolerance for p in points):
29702970
raise ValueError('Numerical noise is too high, the '
29712971
'comparison is inaccurate')

src/sage/rings/asymptotic/growth_group.py

+15-27
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
from sage.structure.unique_representation import (CachedRepresentation,
241241
UniqueRepresentation)
242242
from sage.structure.richcmp import richcmp_by_eq_and_lt
243+
import sage.rings.abc
243244
from .misc import WithLocals
244245

245246

@@ -3622,13 +3623,12 @@ def _convert_(self, data):
36223623
from sage.symbolic.ring import SR
36233624
return self._convert_(SR(data))
36243625

3625-
from sage.symbolic.ring import SymbolicRing
36263626
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
36273627
from sage.rings.polynomial.multi_polynomial_ring_base import \
36283628
MPolynomialRing_base
36293629
from sage.rings.power_series_ring import PowerSeriesRing_generic
36303630
import operator
3631-
if isinstance(P, SymbolicRing):
3631+
if isinstance(P, sage.rings.abc.SymbolicRing):
36323632
if data.operator() == operator.pow:
36333633
base, exponent = data.operands()
36343634
if str(base) == var:
@@ -4419,10 +4419,9 @@ def __init__(self, base, *args, **kwds):
44194419
sage: forget()
44204420
"""
44214421
from warnings import warn
4422-
from sage.symbolic.ring import SymbolicRing
44234422

44244423
super(ExponentialGrowthGroup, self).__init__(base, *args, **kwds)
4425-
if isinstance(base, SymbolicRing) and not self._an_element_base_() > 0:
4424+
if isinstance(base, sage.rings.abc.SymbolicRing) and not self._an_element_base_() > 0:
44264425
warn("When using the Exponential {}, make "
44274426
"assumptions on the used symbolic elements.\n"
44284427
"In particular, use something like "
@@ -4552,9 +4551,8 @@ def _convert_(self, data):
45524551
import operator
45534552
from sage.functions.log import Function_exp
45544553
from sage.symbolic.operators import mul_vararg
4555-
from sage.symbolic.ring import SymbolicRing
45564554

4557-
if isinstance(P, SymbolicRing):
4555+
if isinstance(P, sage.rings.abc.SymbolicRing):
45584556
op = data.operator()
45594557
if op == operator.pow:
45604558
base, exponent = data.operands()
@@ -4654,38 +4652,31 @@ def _split_raw_element_(base):
46544652
(-x, -1)
46554653
sage: forget()
46564654
"""
4657-
from sage.rings.complex_arb import ComplexBallField
4658-
from sage.rings.complex_mpfr import ComplexField_class
4659-
from sage.rings.complex_interval_field import ComplexIntervalField_class
46604655
from sage.rings.integer_ring import ZZ
46614656
from sage.rings.rational_field import QQ
4662-
from sage.rings.real_arb import RealBallField
4663-
from sage.rings.real_mpfr import RealField_class
4664-
from sage.rings.real_mpfi import RealIntervalField_class
46654657
from sage.rings.qqbar import AA
46664658
from sage.structure.element import parent
4667-
from sage.symbolic.ring import SymbolicRing
46684659

46694660
P = base.parent()
4670-
if isinstance(P, SymbolicRing):
4661+
if isinstance(P, sage.rings.abc.SymbolicRing):
46714662
try:
46724663
base = base.pyobject()
46734664
except TypeError:
46744665
pass
46754666
else:
46764667
P = base.parent()
46774668

4678-
if P in (ZZ, QQ, AA) or isinstance(P, (SymbolicRing,
4679-
RealField_class,
4680-
RealIntervalField_class,
4681-
RealBallField)):
4669+
if P in (ZZ, QQ, AA) or isinstance(P, (sage.rings.abc.SymbolicRing,
4670+
sage.rings.abc.RealField,
4671+
sage.rings.abc.RealIntervalField,
4672+
sage.rings.abc.RealBallField)):
46824673
if base > 0:
46834674
return base, None
46844675
if base < 0:
46854676
return -base, -1
4686-
elif isinstance(P, (ComplexField_class,
4687-
ComplexIntervalField_class,
4688-
ComplexBallField)):
4677+
elif isinstance(P, (sage.rings.abc.ComplexField,
4678+
sage.rings.abc.ComplexIntervalField,
4679+
sage.rings.abc.ComplexBallField)):
46894680
size = abs(base)
46904681
direction = base / size
46914682
return size, direction
@@ -4847,9 +4838,6 @@ def factory(cls,
48474838
from sage.categories.cartesian_product import cartesian_product
48484839
from sage.groups.misc_gps.argument_groups import AbstractArgumentGroup
48494840
from sage.groups.misc_gps.argument_groups import ArgumentGroup
4850-
from sage.rings.complex_arb import ComplexBallField
4851-
from sage.rings.complex_mpfr import ComplexField_class
4852-
from sage.rings.complex_interval_field import ComplexIntervalField_class
48534841
from sage.rings.number_field.number_field import NumberField_cyclotomic
48544842
from sage.rings.qqbar import QQbar, AA
48554843

@@ -4861,9 +4849,9 @@ def factory(cls,
48614849
UU = cls._non_growth_group_class_(
48624850
ArgumentGroup(domain=base), var)
48634851
groups = (EE, UU)
4864-
elif isinstance(base, (ComplexField_class,
4865-
ComplexIntervalField_class,
4866-
ComplexBallField)):
4852+
elif isinstance(base, (sage.rings.abc.ComplexField,
4853+
sage.rings.abc.ComplexIntervalField,
4854+
sage.rings.abc.ComplexBallField)):
48674855
EE = cls(base._real_field(), var, **kwds)
48684856
UU = cls._non_growth_group_class_(
48694857
ArgumentGroup(exponents=base._real_field()), var)

0 commit comments

Comments
 (0)