diff --git a/src/sage/algebras/quatalg/quaternion_algebra.py b/src/sage/algebras/quatalg/quaternion_algebra.py index 885ab854170..93e22abd6fd 100644 --- a/src/sage/algebras/quatalg/quaternion_algebra.py +++ b/src/sage/algebras/quatalg/quaternion_algebra.py @@ -51,7 +51,7 @@ from sage.rings.rational import Rational from sage.rings.finite_rings.finite_field_constructor import GF from sage.rings.ideal import Ideal_fractional -from sage.rings.rational_field import is_RationalField, QQ +from sage.rings.rational_field import RationalField, QQ from sage.rings.infinity import infinity from sage.rings.number_field.number_field_base import NumberField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing @@ -429,7 +429,7 @@ def is_division_algebra(self) -> bool: ... NotImplementedError: base field must be rational numbers """ - if not is_RationalField(self.base_ring()): + if not isinstance(self.base_ring(), RationalField): raise NotImplementedError("base field must be rational numbers") return self.discriminant() != 1 @@ -453,7 +453,7 @@ def is_matrix_ring(self) -> bool: NotImplementedError: base field must be rational numbers """ - if not is_RationalField(self.base_ring()): + if not isinstance(self.base_ring(), RationalField): raise NotImplementedError("base field must be rational numbers") return self.discriminant() == 1 @@ -678,7 +678,7 @@ def __init__(self, base_ring, a, b, names='i,j,k'): Parent.__init__(self, base=base_ring, names=names, category=cat) self._a = a self._b = b - if is_RationalField(base_ring) and a.denominator() == 1 == b.denominator(): + if isinstance(base_ring, RationalField) and a.denominator() == 1 == b.denominator(): self.Element = QuaternionAlgebraElement_rational_field elif (isinstance(base_ring, NumberField) and base_ring.degree() > 2 and base_ring.is_absolute() and a.denominator() == 1 == b.denominator() and base_ring.defining_polynomial().is_monic()): @@ -1066,7 +1066,7 @@ def is_definite(self): ... ValueError: base field must be rational numbers """ - if not is_RationalField(self.base_ring()): + if not isinstance(self.base_ring(), RationalField): raise ValueError("base field must be rational numbers") a, b = self.invariants() return a < 0 and b < 0 @@ -1218,7 +1218,7 @@ def discriminant(self): sage: QuaternionAlgebra(QQ[sqrt(2)], 3, 19).discriminant() # needs sage.symbolic Fractional ideal (1) """ - if not is_RationalField(self.base_ring()): + if not isinstance(self.base_ring(), RationalField): try: F = self.base_ring() return F.hilbert_conductor(self._a, self._b) @@ -1245,7 +1245,7 @@ def ramified_primes(self): sage: QuaternionAlgebra(QQ, -58, -69).ramified_primes() [3, 23, 29] """ - if not is_RationalField(self.base_ring()): + if not isinstance(self.base_ring(), RationalField): raise ValueError("base field must be the rational numbers") a, b = self._a, self._b @@ -2517,7 +2517,7 @@ def attempt_isomorphism(self, other): if other.quaternion_algebra() != Q: raise TypeError('not an order in the same quaternion algebra') - if not is_RationalField(Q.base_ring()): + if not isinstance(Q.base_ring(), RationalField): raise NotImplementedError('only implemented for orders in a rational quaternion algebra') if not Q.is_definite(): raise NotImplementedError('only implemented for definite quaternion orders') diff --git a/src/sage/combinat/finite_state_machine_generators.py b/src/sage/combinat/finite_state_machine_generators.py index 11cd2d1b3ab..ae708a195ca 100644 --- a/src/sage/combinat/finite_state_machine_generators.py +++ b/src/sage/combinat/finite_state_machine_generators.py @@ -268,8 +268,8 @@ def Word(self, word, input_alphabet=None): TESTS:: - sage: from sage.rings.integer import is_Integer - sage: all(is_Integer(s.label()) for s in A.states()) + sage: from sage.rings.integer import Integer + sage: all(isinstance(s.label(), Integer) for s in A.states()) True """ letters = list(word) diff --git a/src/sage/combinat/sf/jack.py b/src/sage/combinat/sf/jack.py index 8c62cfb08df..e70959f8dfc 100644 --- a/src/sage/combinat/sf/jack.py +++ b/src/sage/combinat/sf/jack.py @@ -36,7 +36,7 @@ from sage.rings.rational_field import QQ from sage.arith.misc import gcd from sage.arith.functions import lcm -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.misc.misc_c import prod from sage.categories.morphism import SetMorphism from sage.categories.homset import Hom, End @@ -481,7 +481,7 @@ def normalize_coefficients(self, c): 6/(t^2 + 3*t + 2) """ BR = self.base_ring() - if is_FractionField(BR) and BR.base_ring() == QQ: + if isinstance(BR, FractionField_generic) and BR.base_ring() == QQ: denom = c.denominator() numer = c.numerator() diff --git a/src/sage/dynamics/arithmetic_dynamics/affine_ds.py b/src/sage/dynamics/arithmetic_dynamics/affine_ds.py index a1e4bc1700d..2b9dd28b13b 100644 --- a/src/sage/dynamics/arithmetic_dynamics/affine_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/affine_ds.py @@ -45,7 +45,7 @@ class initialization directly. from sage.rings.integer import Integer from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.fraction_field import FractionField -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.rings.quotient_ring import is_QuotientRing from sage.schemes.affine.affine_morphism import SchemeMorphism_polynomial_affine_space from sage.schemes.affine.affine_morphism import SchemeMorphism_polynomial_affine_space_field @@ -261,7 +261,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None): polys = [morphism_or_polys] PR = get_coercion_model().common_parent(*polys) - fraction_field = any(is_FractionField(poly.parent()) for poly in polys) + fraction_field = any(isinstance(poly.parent(), FractionField_generic) for poly in polys) if fraction_field: K = PR.base_ring().fraction_field() # Replace base ring with its fraction field diff --git a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py index 4b3ebd0d89a..a04cf57a28d 100644 --- a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py @@ -87,8 +87,8 @@ class initialization directly. from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.finite_rings.finite_field_constructor import GF from sage.rings.finite_rings.integer_mod_ring import Zmod -from sage.rings.fraction_field import (FractionField, is_FractionField, FractionField_1poly_field) -from sage.rings.fraction_field_element import is_FractionFieldElement, FractionFieldElement +from sage.rings.fraction_field import FractionField, FractionField_generic, FractionField_1poly_field +from sage.rings.fraction_field_element import FractionFieldElement from sage.rings.function_field.function_field import is_FunctionField from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ @@ -394,11 +394,11 @@ def __classcall_private__(cls, morphism_or_polys, domain=None, names=None): # homogenize! f = morphism_or_polys aff_CR = f.parent() - if (not is_PolynomialRing(aff_CR) and not is_FractionField(aff_CR) + if (not is_PolynomialRing(aff_CR) and not isinstance(aff_CR, FractionField_generic) and not (is_MPolynomialRing(aff_CR) and aff_CR.ngens() == 1)): msg = '{} is not a single variable polynomial or rational function' raise ValueError(msg.format(f)) - if is_FractionField(aff_CR): + if isinstance(aff_CR, FractionField_generic): polys = [f.numerator(),f.denominator()] else: polys = [f, aff_CR(1)] @@ -889,7 +889,7 @@ def dynatomic_polynomial(self, period): # do it again to divide out by denominators of coefficients PHI = QR2[0].sage() PHI = PHI.numerator()._maxima_().divide(PHI.denominator())[0].sage() - if not is_FractionFieldElement(PHI): + if not isinstance(PHI, FractionFieldElement): from sage.symbolic.expression_conversions import polynomial PHI = polynomial(PHI, ring=self.coordinate_ring()) except (TypeError, NotImplementedError): #something Maxima, or the conversion, can't handle @@ -3533,7 +3533,7 @@ def affine_preperiodic_model(self, m, n, return_conjugation=False): if hyperplane_found: break else: - if is_PolynomialRing(R) or is_MPolynomialRing(R) or is_FractionField(R): + if is_PolynomialRing(R) or is_MPolynomialRing(R) or isinstance(R, FractionField_generic): # for polynomial rings, we can get an infinite family of hyperplanes # by increasing the degree var = R.gen() @@ -3702,7 +3702,7 @@ def automorphism_group(self, **kwds): raise NotImplementedError("rational function of degree 1 not implemented") f = self.dehomogenize(1) R = PolynomialRing(f.base_ring(),'x') - if is_FractionFieldElement(f[0]): + if isinstance(f[0], FractionFieldElement): F = (f[0].numerator().univariate_polynomial(R))/f[0].denominator().univariate_polynomial(R) else: F = f[0].univariate_polynomial(R) @@ -4880,7 +4880,7 @@ def periodic_points(self, n, minimal=True, formal=False, R=None, algorithm='vari if isinstance(R, FractionField_1poly_field) or is_FunctionField(R): raise NotImplementedError('periodic points not implemented for fraction function fields; ' 'clear denominators and use the polynomial ring instead') - if is_FractionField(R): + if isinstance(R, FractionField_generic): if is_MPolynomialRing(R.ring()): raise NotImplementedError('periodic points not implemented for fraction function fields; ' 'clear denominators and use the polynomial ring instead') @@ -5784,7 +5784,7 @@ def sigma_invariants(self, n, formal=False, embedding=None, type='point', X = X.change_ring(F) else: F = base_ring - if is_FractionField(base_ring): + if isinstance(base_ring, FractionField_generic): if is_MPolynomialRing(base_ring.ring()) or is_PolynomialRing(base_ring.ring()): f.normalize_coordinates() f_ring = f.change_ring(base_ring.ring()) @@ -5886,7 +5886,7 @@ def sigma_invariants(self, n, formal=False, embedding=None, type='point', return sigmas base_ring = dom.base_ring() - if is_FractionField(base_ring): + if isinstance(base_ring, FractionField_generic): base_ring = base_ring.ring() if (is_PolynomialRing(base_ring) or is_MPolynomialRing(base_ring)): base_ring = base_ring.base_ring() diff --git a/src/sage/dynamics/complex_dynamics/mandel_julia.py b/src/sage/dynamics/complex_dynamics/mandel_julia.py index 00eb7d473eb..8ceb38d0cec 100644 --- a/src/sage/dynamics/complex_dynamics/mandel_julia.py +++ b/src/sage/dynamics/complex_dynamics/mandel_julia.py @@ -51,7 +51,7 @@ from sage.schemes.projective.projective_space import ProjectiveSpace from sage.misc.prandom import randint from sage.calculus.var import var -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.categories.function_fields import FunctionFields lazy_import('sage.dynamics.arithmetic_dynamics.generic_ds', 'DynamicalSystem') @@ -243,14 +243,14 @@ def mandelbrot_plot(f=None, **kwds): P = f.parent() if P.base_ring() is CC or P.base_ring() is CDF: - if is_FractionField(P): + if isinstance(P, FractionField_generic): raise NotImplementedError("coefficients must be polynomials in the parameter") gen_list = list(P.gens()) parameter = gen_list.pop(gen_list.index(parameter)) variable = gen_list.pop() elif P.base_ring().base_ring() is CC or P.base_ring().base_ring() is CDF: - if is_FractionField(P.base_ring()): + if isinstance(P.base_ring(), FractionField_generic): raise NotImplementedError("coefficients must be polynomials in the parameter") phi = P.flattening_morphism() f = phi(f) diff --git a/src/sage/dynamics/complex_dynamics/mandel_julia_helper.pyx b/src/sage/dynamics/complex_dynamics/mandel_julia_helper.pyx index 2cb446886e1..479589dc0e3 100644 --- a/src/sage/dynamics/complex_dynamics/mandel_julia_helper.pyx +++ b/src/sage/dynamics/complex_dynamics/mandel_julia_helper.pyx @@ -34,7 +34,7 @@ from sage.ext.fast_callable import fast_callable from sage.calculus.all import symbolic_expression from sage.symbolic.ring import SR from sage.calculus.var import var -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.categories.function_fields import FunctionFields from cypari2.handle_error import PariError from math import sqrt @@ -709,14 +709,14 @@ cpdef polynomial_mandelbrot(f, parameter=None, double x_center=0, P = f.parent() if P.base_ring() is CC: - if is_FractionField(P): + if isinstance(P, FractionField_generic): raise NotImplementedError("coefficients must be polynomials in the parameter") gen_list = list(P.gens()) parameter = gen_list.pop(gen_list.index(parameter)) variable = gen_list.pop() elif P.base_ring().base_ring() is CC: - if is_FractionField(P.base_ring()): + if isinstance(P.base_ring(), FractionField_generic): raise NotImplementedError("coefficients must be polynomials in the parameter") phi = P.flattening_morphism() f = phi(f) diff --git a/src/sage/functions/transcendental.py b/src/sage/functions/transcendental.py index 1c657f5b8b3..3dcb446e706 100644 --- a/src/sage/functions/transcendental.py +++ b/src/sage/functions/transcendental.py @@ -28,10 +28,10 @@ lazy_import('sage.combinat.combinat', 'bernoulli_polynomial') lazy_import('sage.rings.cc', 'CC') -lazy_import('sage.rings.complex_mpfr', ['ComplexField', 'is_ComplexNumber']) +lazy_import('sage.rings.complex_mpfr', ['ComplexField', 'ComplexNumber']) lazy_import('sage.rings.polynomial.polynomial_real_mpfr_dense', 'PolynomialRealDense') lazy_import('sage.rings.real_double', 'RDF') -lazy_import('sage.rings.real_mpfr', ['RR', 'RealField', 'is_RealNumber']) +lazy_import('sage.rings.real_mpfr', ['RR', 'RealField', 'RealNumber']) lazy_import('sage.libs.mpmath.utils', 'call', as_='_mpmath_utils_call') lazy_import('mpmath', 'zeta', as_='_mpmath_zeta') @@ -452,7 +452,7 @@ def zeta_symmetric(s): - I copied the definition of xi from http://web.viu.ca/pughg/RiemannZeta/RiemannZetaLong.html """ - if not (is_ComplexNumber(s) or is_RealNumber(s)): + if not (isinstance(s, ComplexNumber) or isinstance(s, RealNumber)): s = ComplexField()(s) R = s.parent() @@ -544,7 +544,7 @@ def _eval_(self, x): sage: dickman_rho(0) # needs sage.symbolic 1.00000000000000 """ - if not is_RealNumber(x): + if not isinstance(x, RealNumber): try: x = RR(x) except (TypeError, ValueError): diff --git a/src/sage/groups/affine_gps/affine_group.py b/src/sage/groups/affine_gps/affine_group.py index 7d27488ec59..07b63d4a2bc 100644 --- a/src/sage/groups/affine_gps/affine_group.py +++ b/src/sage/groups/affine_gps/affine_group.py @@ -173,8 +173,8 @@ def __classcall__(cls, *args, **kwds): ring = V.base_ring() if len(args) == 2: degree, ring = args - from sage.rings.integer import is_Integer - if is_Integer(ring): + from sage.rings.integer import Integer + if isinstance(ring, Integer): from sage.rings.finite_rings.finite_field_constructor import FiniteField var = kwds.get('var', 'a') ring = FiniteField(ring, var) diff --git a/src/sage/groups/matrix_gps/matrix_group.py b/src/sage/groups/matrix_gps/matrix_group.py index ef05b55c190..f9135822de4 100644 --- a/src/sage/groups/matrix_gps/matrix_group.py +++ b/src/sage/groups/matrix_gps/matrix_group.py @@ -59,7 +59,7 @@ from sage.categories.groups import Groups from sage.categories.rings import Rings -from sage.rings.integer import is_Integer +from sage.rings.integer import Integer from sage.matrix.matrix_space import MatrixSpace from sage.misc.latex import latex from sage.structure.richcmp import (richcmp_not_equal, rich_to_bool, @@ -417,7 +417,7 @@ def __init__(self, degree, base_ring, category=None): True """ assert base_ring in Rings - assert is_Integer(degree) + assert isinstance(degree, Integer) self._deg = degree if self._deg <= 0: diff --git a/src/sage/matrix/matrix0.pyx b/src/sage/matrix/matrix0.pyx index c5280bbe578..83edc74c16d 100644 --- a/src/sage/matrix/matrix0.pyx +++ b/src/sage/matrix/matrix0.pyx @@ -42,7 +42,7 @@ from sage.categories.commutative_rings import CommutativeRings from sage.categories.rings import Rings import sage.rings.abc -from sage.rings.integer_ring import is_IntegerRing +from sage.rings.integer_ring import IntegerRing_class import sage.modules.free_module @@ -5975,7 +5975,7 @@ cdef class Matrix(sage.structure.element.Matrix): return (~self.lift_centered()).change_ring(R) except (TypeError, ZeroDivisionError): raise ZeroDivisionError("input matrix must be nonsingular") - elif algorithm is None and is_IntegerRing(R): + elif algorithm is None and isinstance(R, IntegerRing_class): try: return (~self).change_ring(R) except (TypeError, ZeroDivisionError): diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx index c0f1d646340..af5058ae67c 100644 --- a/src/sage/matrix/matrix2.pyx +++ b/src/sage/matrix/matrix2.pyx @@ -93,8 +93,8 @@ from sage.structure.element import Vector from sage.structure.element cimport have_same_parent from sage.misc.verbose import verbose from sage.rings.number_field.number_field_base import NumberField -from sage.rings.integer_ring import ZZ, is_IntegerRing -from sage.rings.rational_field import QQ, is_RationalField +from sage.rings.integer_ring import ZZ, IntegerRing_class +from sage.rings.rational_field import QQ, RationalField import sage.rings.abc from sage.arith.numerical_approx cimport digits_to_bits @@ -4538,11 +4538,11 @@ cdef class Matrix(Matrix1): algorithm = 'default' elif algorithm not in ['default', 'generic', 'flint', 'pari', 'padic', 'pluq']: raise ValueError("matrix kernel algorithm '%s' not recognized" % algorithm) - elif algorithm == 'padic' and not (is_IntegerRing(R) or is_RationalField(R)): + elif algorithm == 'padic' and not (isinstance(R, IntegerRing_class) or isinstance(R, RationalField)): raise ValueError("'padic' matrix kernel algorithm only available over the rationals and the integers, not over %s" % R) - elif algorithm == 'flint' and not (is_IntegerRing(R) or is_RationalField(R)): + elif algorithm == 'flint' and not (isinstance(R, IntegerRing_class) or isinstance(R, RationalField)): raise ValueError("'flint' matrix kernel algorithm only available over the rationals and the integers, not over %s" % R) - elif algorithm == 'pari' and not (is_IntegerRing(R) or (isinstance(R, NumberField) and not is_RationalField(R))): + elif algorithm == 'pari' and not (isinstance(R, IntegerRing_class) or (isinstance(R, NumberField) and not isinstance(R, RationalField))): raise ValueError("'pari' matrix kernel algorithm only available over non-trivial number fields and the integers, not over %s" % R) elif algorithm == 'generic' and R not in _Fields: raise ValueError("'generic' matrix kernel algorithm only available over a field, not over %s" % R) @@ -4557,7 +4557,7 @@ cdef class Matrix(Matrix1): raise ValueError("matrix kernel basis format '%s' not recognized" % basis) elif basis == 'pivot' and R not in _Fields: raise ValueError('pivot basis only available over a field, not over %s' % R) - elif basis == 'LLL' and not is_IntegerRing(R): + elif basis == 'LLL' and not isinstance(R, IntegerRing_class): raise ValueError('LLL-reduced basis only available over the integers, not over %s' % R) if basis == 'default': basis = 'echelon' if R in _Fields else 'computed' @@ -4566,7 +4566,7 @@ cdef class Matrix(Matrix1): proof = kwds.pop('proof', None) if proof not in [None, True, False]: raise ValueError("'proof' must be one of True, False or None, not %s" % proof) - if not (proof is None or is_IntegerRing(R)): + if not (proof is None or isinstance(R, IntegerRing_class)): raise ValueError("'proof' flag only valid for matrices over the integers") # We could sanitize/process remaining (un-popped) keywords here and diff --git a/src/sage/matrix/matrix_rational_dense.pyx b/src/sage/matrix/matrix_rational_dense.pyx index 27650a74482..60ef434904a 100644 --- a/src/sage/matrix/matrix_rational_dense.pyx +++ b/src/sage/matrix/matrix_rational_dense.pyx @@ -110,7 +110,7 @@ from sage.matrix.args cimport SparseEntry, MatrixArgs_init from sage.matrix.matrix_integer_dense cimport Matrix_integer_dense, _lift_crt from sage.structure.element cimport Element, Vector from sage.rings.integer cimport Integer -from sage.rings.integer_ring import ZZ, is_IntegerRing +from sage.rings.integer_ring import ZZ, IntegerRing_class import sage.rings.abc from sage.rings.rational_field import QQ @@ -1465,7 +1465,7 @@ cdef class Matrix_rational_dense(Matrix_dense): if self._is_immutable: return self return self.__copy__() - if is_IntegerRing(R): + if isinstance(R, IntegerRing_class): A, d = self._clear_denom() if not d.is_one(): raise TypeError("matrix has denominators so can't change to ZZ") diff --git a/src/sage/matrix/matrix_space.py b/src/sage/matrix/matrix_space.py index 473d961d090..71eb305c2be 100644 --- a/src/sage/matrix/matrix_space.py +++ b/src/sage/matrix/matrix_space.py @@ -402,7 +402,7 @@ def get_matrix_class(R, nrows, ncols, sparse, implementation): if R.order() < matrix_modn_sparse.MAX_MODULUS: return matrix_modn_sparse.Matrix_modn_sparse - if sage.rings.rational_field.is_RationalField(R): + if isinstance(R, sage.rings.rational_field.RationalField): try: from . import matrix_rational_sparse except ImportError: @@ -410,7 +410,7 @@ def get_matrix_class(R, nrows, ncols, sparse, implementation): else: return matrix_rational_sparse.Matrix_rational_sparse - if sage.rings.integer_ring.is_IntegerRing(R): + if isinstance(R, sage.rings.integer_ring.IntegerRing_class): try: from . import matrix_integer_sparse except ImportError: diff --git a/src/sage/modular/dirichlet.py b/src/sage/modular/dirichlet.py index 86b7a8a29f2..4d0436bad22 100644 --- a/src/sage/modular/dirichlet.py +++ b/src/sage/modular/dirichlet.py @@ -77,7 +77,7 @@ from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.power_series_ring import PowerSeriesRing -from sage.rings.rational_field import QQ, is_RationalField +from sage.rings.rational_field import QQ, RationalField from sage.structure.element import MultiplicativeGroupElement from sage.structure.factory import UniqueFactory from sage.structure.gens_py import multiplicative_iterator @@ -1386,7 +1386,7 @@ def gauss_sum(self, a=1): elif isinstance(K, sage.rings.abc.AlgebraicField): L = K zeta = L.zeta(m) - elif isinstance(K, sage.rings.abc.NumberField_cyclotomic) or is_RationalField(K): + elif isinstance(K, sage.rings.abc.NumberField_cyclotomic) or isinstance(K, RationalField): chi = chi.minimize_base_ring() n = lcm(m, G.zeta_order()) L = CyclotomicField(n) @@ -1467,7 +1467,7 @@ def phi(t): from sage.rings.complex_mpfr import ComplexField CC = ComplexField(prec) phi = CC.coerce_map_from(K) - elif isinstance(K, sage.rings.abc.NumberField_cyclotomic) or is_RationalField(K): + elif isinstance(K, sage.rings.abc.NumberField_cyclotomic) or isinstance(K, RationalField): phi = K.complex_embedding(prec) CC = phi.codomain() else: @@ -1688,7 +1688,7 @@ def kloosterman_sum_numerical(self, prec=53, a=1, b=0): """ G = self.parent() K = G.base_ring() - if not (isinstance(K, sage.rings.abc.NumberField_cyclotomic) or is_RationalField(K)): + if not (isinstance(K, sage.rings.abc.NumberField_cyclotomic) or isinstance(K, RationalField)): raise NotImplementedError("Kloosterman sums only currently implemented when the base ring is a cyclotomic field or QQ.") phi = K.complex_embedding(prec) CC = phi.codomain() diff --git a/src/sage/modular/modform_hecketriangle/functors.py b/src/sage/modular/modform_hecketriangle/functors.py index aae555d250a..b0fdfcf5ac7 100644 --- a/src/sage/modular/modform_hecketriangle/functors.py +++ b/src/sage/modular/modform_hecketriangle/functors.py @@ -78,12 +78,12 @@ def _get_base_ring(ring, var_name="d"): True """ - # from sage.rings.fraction_field import is_FractionField + # from sage.rings.fraction_field import FractionField_generic from sage.rings.polynomial.polynomial_ring import is_PolynomialRing from sage.categories.pushout import FractionField as FractionFieldFunctor base_ring = ring - # if (is_FractionField(base_ring)): + # if (isinstance(base_ring, FractionField_generic)): # base_ring = base_ring.base() if (base_ring.construction() and base_ring.construction()[0] == FractionFieldFunctor()): base_ring = base_ring.construction()[1] diff --git a/src/sage/modular/modsym/relation_matrix.py b/src/sage/modular/modsym/relation_matrix.py index ef0e17eef6a..7d58bb62a48 100644 --- a/src/sage/modular/modsym/relation_matrix.py +++ b/src/sage/modular/modsym/relation_matrix.py @@ -27,7 +27,7 @@ from sage.misc.search import search from sage.misc.verbose import verbose from sage.modular.modsym.manin_symbol_list import ManinSymbolList -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.categories.rings import Rings @@ -498,7 +498,7 @@ def relation_matrix_wtk_g0(syms, sign, field, sparse): rels = sorted(rels) # required for stability of doctests with python3 - if syms._apply_S_only_0pm1() and is_RationalField(field): + if syms._apply_S_only_0pm1() and isinstance(field, RationalField): from . import relation_matrix_pyx mod = relation_matrix_pyx.sparse_2term_quotient_only_pm1(rels, len(syms)) else: diff --git a/src/sage/modules/free_module.py b/src/sage/modules/free_module.py index ad94efcc94b..f1c7c7cdbaa 100644 --- a/src/sage/modules/free_module.py +++ b/src/sage/modules/free_module.py @@ -3823,7 +3823,7 @@ def index_in(self, other): return sage.rings.infinity.infinity a = sage.matrix.matrix_space.MatrixSpace(self.base_field(), self.rank())(C).determinant() - if sage.rings.integer_ring.is_IntegerRing(self.base_ring()): + if isinstance(self.base_ring(), sage.rings.integer_ring.IntegerRing_class): return a.abs() elif isinstance(self.base_ring, sage.rings.abc.Order): return self.base_ring().ideal(a).norm() @@ -8266,10 +8266,10 @@ def element_class(R, is_sparse): """ import sage.rings.integer_ring - if sage.rings.integer_ring.is_IntegerRing(R) and not is_sparse: + if isinstance(R, sage.rings.integer_ring.IntegerRing_class) and not is_sparse: from sage.modules.vector_integer_dense import Vector_integer_dense return Vector_integer_dense - elif sage.rings.rational_field.is_RationalField(R) and not is_sparse: + elif isinstance(R, sage.rings.rational_field.RationalField) and not is_sparse: from sage.modules.vector_rational_dense import Vector_rational_dense return Vector_rational_dense elif isinstance(R, sage.rings.abc.IntegerModRing) and not is_sparse: diff --git a/src/sage/plot/plot3d/plot3d.py b/src/sage/plot/plot3d/plot3d.py index ad885744ba7..4e19284828a 100644 --- a/src/sage/plot/plot3d/plot3d.py +++ b/src/sage/plot/plot3d/plot3d.py @@ -318,9 +318,9 @@ def to_cartesian(self, func, params=None): """ from sage.structure.element import Expression - from sage.rings.real_mpfr import is_RealNumber - from sage.rings.integer import is_Integer - if params is not None and (isinstance(func, Expression) or is_RealNumber(func) or is_Integer(func)): + from sage.rings.real_mpfr import RealNumber + from sage.rings.integer import Integer + if params is not None and (isinstance(func, Expression) or isinstance(func, RealNumber) or isinstance(func, Integer)): return self.transform(**{ self.dep_var: func, self.indep_vars[0]: params[0], diff --git a/src/sage/probability/random_variable.py b/src/sage/probability/random_variable.py index 4a385e55150..a07af1220d6 100644 --- a/src/sage/probability/random_variable.py +++ b/src/sage/probability/random_variable.py @@ -19,7 +19,7 @@ from sage.structure.parent import Parent from sage.functions.log import log from sage.misc.functional import sqrt -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.sets.set import Set from pprint import pformat @@ -343,11 +343,11 @@ def __init__(self, X, P, codomain=None, check=False): if codomain is None: from sage.rings.real_mpfr import RealField codomain = RealField() - if not isinstance(codomain, sage.rings.abc.RealField) and not is_RationalField(codomain): + if not isinstance(codomain, sage.rings.abc.RealField) and not isinstance(codomain, RationalField): raise TypeError("Argument codomain (= %s) must be the reals or rationals" % codomain) if check: one = sum(P.values()) - if is_RationalField(codomain): + if isinstance(codomain, RationalField): if not one == 1: raise TypeError("Argument P (= %s) does not define a probability function") else: diff --git a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py index 1039ce81bbc..f5163d394a5 100644 --- a/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py +++ b/src/sage/rings/asymptotic/asymptotics_multivariate_generating_functions.py @@ -3289,8 +3289,8 @@ def _coerce_map_from_(self, P): if self.base().has_coerce_map_from(P.base()): return True - from sage.rings.fraction_field import is_FractionField - if is_FractionField(P): + from sage.rings.fraction_field import FractionField_generic + if isinstance(P, FractionField_generic): B = P.base() from sage.rings.polynomial.polynomial_ring import is_PolynomialRing from sage.rings.polynomial.multi_polynomial_ring_base import is_MPolynomialRing diff --git a/src/sage/rings/complex_double.pyx b/src/sage/rings/complex_double.pyx index 2f85cbd101a..c59a2b46d6f 100644 --- a/src/sage/rings/complex_double.pyx +++ b/src/sage/rings/complex_double.pyx @@ -706,10 +706,18 @@ def is_ComplexDoubleElement(x): sage: from sage.rings.complex_double import is_ComplexDoubleElement sage: is_ComplexDoubleElement(0) + doctest:warning... + DeprecationWarning: The function is_ComplexDoubleElement is deprecated; + use 'isinstance(..., ComplexDoubleElement)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. False sage: is_ComplexDoubleElement(CDF(0)) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_ComplexDoubleElement is deprecated; " + "use 'isinstance(..., ComplexDoubleElement)' instead.") return isinstance(x, ComplexDoubleElement) diff --git a/src/sage/rings/complex_interval.pyx b/src/sage/rings/complex_interval.pyx index cd4ba7bb8e8..dd830421dd9 100644 --- a/src/sage/rings/complex_interval.pyx +++ b/src/sage/rings/complex_interval.pyx @@ -82,10 +82,18 @@ def is_ComplexIntervalFieldElement(x): sage: from sage.rings.complex_interval import is_ComplexIntervalFieldElement as is_CIFE sage: is_CIFE(CIF(2)) + doctest:warning... + DeprecationWarning: The function is_ComplexIntervalFieldElement is deprecated; + use 'isinstance(..., ComplexIntervalFieldElement)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_CIFE(CC(2)) False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_ComplexIntervalFieldElement is deprecated; " + "use 'isinstance(..., ComplexIntervalFieldElement)' instead.") return isinstance(x, ComplexIntervalFieldElement) diff --git a/src/sage/rings/complex_mpfr.pyx b/src/sage/rings/complex_mpfr.pyx index e1ce333d57d..79c06af06d5 100644 --- a/src/sage/rings/complex_mpfr.pyx +++ b/src/sage/rings/complex_mpfr.pyx @@ -127,6 +127,10 @@ def is_ComplexNumber(x): sage: a = ComplexNumber(1, 2); a 1.00000000000000 + 2.00000000000000*I sage: is_ComplexNumber(a) + doctest:warning... + DeprecationWarning: The function is_ComplexNumber is deprecated; + use 'isinstance(..., ComplexNumber)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: b = ComplexNumber(1); b 1.00000000000000 @@ -146,6 +150,10 @@ def is_ComplexNumber(x): sage: is_ComplexNumber(d) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_ComplexNumber is deprecated; " + "use 'isinstance(..., ComplexNumber)' instead.") return isinstance(x, ComplexNumber) diff --git a/src/sage/rings/finite_rings/element_givaro.pyx b/src/sage/rings/finite_rings/element_givaro.pyx index a4a0aa5cd68..401f398ddee 100644 --- a/src/sage/rings/finite_rings/element_givaro.pyx +++ b/src/sage/rings/finite_rings/element_givaro.pyx @@ -69,7 +69,7 @@ from sage.structure.element cimport Vector from sage.interfaces.abc import GapElement -cdef object is_IntegerMod +cdef object IntegerMod_abstract cdef object Integer cdef object Rational cdef object MPolynomial @@ -80,17 +80,17 @@ cdef void late_import() noexcept: """ Late import of modules """ - global is_IntegerMod, \ + global IntegerMod_abstract, \ Integer, \ Rational, \ MPolynomial, \ Polynomial - if is_IntegerMod is not None: + if IntegerMod_abstract is not None: return import sage.rings.finite_rings.integer_mod - is_IntegerMod = sage.rings.finite_rings.integer_mod.is_IntegerMod + IntegerMod_abstract = sage.rings.finite_rings.integer_mod.IntegerMod_abstract import sage.rings.integer Integer = sage.rings.integer.Integer @@ -361,7 +361,7 @@ cdef class Cache_givaro(Cache_base): else: raise TypeError("unable to coerce from a finite field other than the prime subfield") - elif isinstance(e, (int, Integer)) or is_IntegerMod(e): + elif isinstance(e, (int, Integer)) or isinstance(e, IntegerMod_abstract): try: e_int = e % self.characteristic() self.objectptr.initi(res, e_int) diff --git a/src/sage/rings/finite_rings/element_ntl_gf2e.pyx b/src/sage/rings/finite_rings/element_ntl_gf2e.pyx index 512ac4ec1d2..32ffd192353 100644 --- a/src/sage/rings/finite_rings/element_ntl_gf2e.pyx +++ b/src/sage/rings/finite_rings/element_ntl_gf2e.pyx @@ -50,7 +50,7 @@ from sage.rings.finite_rings.finite_field_ntl_gf2e import FiniteField_ntl_gf2e from sage.interfaces.abc import GapElement -cdef object is_IntegerMod +cdef object IntegerMod_abstract cdef object Integer cdef object Rational cdef object MPolynomial @@ -64,7 +64,7 @@ cdef int late_import() except -1: i.e. after the module was loaded. This is needed to avoid circular imports. """ - global is_IntegerMod, \ + global IntegerMod_abstract, \ Integer, \ Rational, \ MPolynomial, \ @@ -72,11 +72,11 @@ cdef int late_import() except -1: GF, \ GF2, GF2_0, GF2_1 - if is_IntegerMod is not None: + if IntegerMod_abstract is not None: return 0 import sage.rings.finite_rings.integer_mod - is_IntegerMod = sage.rings.finite_rings.integer_mod.is_IntegerMod + IntegerMod_abstract = sage.rings.finite_rings.integer_mod.IntegerMod_abstract import sage.rings.rational Rational = sage.rings.rational.Rational @@ -275,7 +275,7 @@ cdef class Cache_ntl_gf2e(Cache_base): cdef FiniteField_ntl_gf2eElement g cdef Py_ssize_t i - if is_IntegerMod(e): + if isinstance(e, IntegerMod_abstract): e = e.lift() if isinstance(e, (int, Integer)): GF2E_conv_long(res.x,int(e&1)) diff --git a/src/sage/rings/finite_rings/integer_mod.pyx b/src/sage/rings/finite_rings/integer_mod.pyx index 097f8ac87d3..b2238689afb 100644 --- a/src/sage/rings/finite_rings/integer_mod.pyx +++ b/src/sage/rings/finite_rings/integer_mod.pyx @@ -213,10 +213,18 @@ def is_IntegerMod(x): sage: from sage.rings.finite_rings.integer_mod import is_IntegerMod sage: is_IntegerMod(5) + doctest:warning... + DeprecationWarning: The function is_IntegerMod is deprecated; + use 'isinstance(..., IntegerMod_abstract)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. False sage: is_IntegerMod(Mod(5,10)) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_IntegerMod is deprecated; " + "use 'isinstance(..., IntegerMod_abstract)' instead.") return isinstance(x, IntegerMod_abstract) @@ -4213,18 +4221,18 @@ def lucas(k, P, Q=1, n=None): """ cdef IntegerMod_abstract p,q - if n is None and not is_IntegerMod(P): + if n is None and not isinstance(P, IntegerMod_abstract): raise ValueError if n is None: n = P.modulus() - if not is_IntegerMod(P): + if not isinstance(P, IntegerMod_abstract): p = Mod(P,n) else: p = P - if not is_IntegerMod(Q): + if not isinstance(Q, IntegerMod_abstract): q = Mod(Q,n) else: q = Q diff --git a/src/sage/rings/finite_rings/residue_field.pyx b/src/sage/rings/finite_rings/residue_field.pyx index 5e9d74844e3..7a7fa6dfc23 100644 --- a/src/sage/rings/finite_rings/residue_field.pyx +++ b/src/sage/rings/finite_rings/residue_field.pyx @@ -186,7 +186,7 @@ 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 NumberFieldIdeal -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.polynomial.polynomial_ring import is_PolynomialRing @@ -1138,7 +1138,7 @@ cdef class ReductionMap(Map): return FiniteField_prime_modn._element_constructor_(self._F, x) except ZeroDivisionError: raise ZeroDivisionError("Cannot reduce rational %s modulo %s: it has negative valuation" % (x, p.gen())) - elif is_FractionField(self._K): + elif isinstance(self._K, FractionField_generic): p = p.gen() if p.degree() == 1: return self._F((x.numerator() % p)[0] / (x.denominator() % p)[0]) @@ -1656,7 +1656,7 @@ cdef class LiftingMap(Section): """ if self._K is QQ or self._K is ZZ: return self._K(x.lift()) # x.lift() is in ZZ - elif is_FractionField(self._K): + elif isinstance(self._K, FractionField_generic): if self._F.p.degree() == 1: return self._K(self._K.ring_of_integers()(x)) else: diff --git a/src/sage/rings/fraction_field.py b/src/sage/rings/fraction_field.py index 742729981eb..756cbbc9efc 100644 --- a/src/sage/rings/fraction_field.py +++ b/src/sage/rings/fraction_field.py @@ -151,10 +151,18 @@ def is_FractionField(x) -> bool: sage: from sage.rings.fraction_field import is_FractionField sage: is_FractionField(Frac(ZZ['x'])) + doctest:warning... + DeprecationWarning: The function is_FractionField is deprecated; + use 'isinstance(..., FractionField_generic)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_FractionField(QQ) False """ + from sage.misc.superseded import deprecation + deprecation(38128, + "The function is_FractionField is deprecated; " + "use 'isinstance(..., FractionField_generic)' instead.") return isinstance(x, FractionField_generic) diff --git a/src/sage/rings/fraction_field_element.pyx b/src/sage/rings/fraction_field_element.pyx index a9c427c03bc..e651a0bf560 100644 --- a/src/sage/rings/fraction_field_element.pyx +++ b/src/sage/rings/fraction_field_element.pyx @@ -37,12 +37,20 @@ def is_FractionFieldElement(x): sage: from sage.rings.fraction_field_element import is_FractionFieldElement sage: R. = ZZ[] sage: is_FractionFieldElement(x/2) + doctest:warning... + DeprecationWarning: The function is_FractionFieldElement is deprecated; + use 'isinstance(..., FractionFieldElement)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. False sage: is_FractionFieldElement(2/x) True sage: is_FractionFieldElement(1/3) False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_FractionFieldElement is deprecated; " + "use 'isinstance(..., FractionFieldElement)' instead.") return isinstance(x, FractionFieldElement) diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx index 6d9155b643f..b4a1fa5039b 100644 --- a/src/sage/rings/integer.pyx +++ b/src/sage/rings/integer.pyx @@ -326,6 +326,10 @@ def is_Integer(x): sage: from sage.rings.integer import is_Integer sage: is_Integer(2) + doctest:warning... + DeprecationWarning: The function is_Integer is deprecated; + use 'isinstance(..., Integer)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_Integer(2/1) False @@ -334,6 +338,10 @@ def is_Integer(x): sage: is_Integer('5') False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_Integer is deprecated; " + "use 'isinstance(..., Integer)' instead.") return isinstance(x, Integer) diff --git a/src/sage/rings/integer_ring.pyx b/src/sage/rings/integer_ring.pyx index 12b522a8bd7..a1574d00756 100644 --- a/src/sage/rings/integer_ring.pyx +++ b/src/sage/rings/integer_ring.pyx @@ -96,6 +96,10 @@ def is_IntegerRing(x): sage: from sage.rings.integer_ring import is_IntegerRing sage: is_IntegerRing(ZZ) + doctest:warning... + DeprecationWarning: The function is_IntegerRing is deprecated; + use 'isinstance(..., IntegerRing_class)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_IntegerRing(QQ) False @@ -104,6 +108,10 @@ def is_IntegerRing(x): sage: is_IntegerRing(parent(1/3)) False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_IntegerRing is deprecated; " + "use 'isinstance(..., IntegerRing_class)' instead.") return isinstance(x, IntegerRing_class) diff --git a/src/sage/rings/laurent_series_ring.py b/src/sage/rings/laurent_series_ring.py index 8df962fe320..e2b03bcca58 100644 --- a/src/sage/rings/laurent_series_ring.py +++ b/src/sage/rings/laurent_series_ring.py @@ -503,7 +503,7 @@ def _element_constructor_(self, x, n=0, prec=infinity): sage: P({-3: 1}) x^-3 """ - from sage.rings.fraction_field_element import is_FractionFieldElement + from sage.rings.fraction_field_element import FractionFieldElement from sage.rings.lazy_series import LazyPowerSeries, LazyLaurentSeries from sage.rings.polynomial.multi_polynomial import MPolynomial from sage.rings.polynomial.polynomial_element import Polynomial @@ -536,7 +536,7 @@ def _element_constructor_(self, x, n=0, prec=infinity): return (x << n).add_bigoh(bigoh) else: # General case, pretend to be a polynomial return (self(self.polynomial_ring()(x)) << n).add_bigoh(prec) - elif (is_FractionFieldElement(x) + elif (isinstance(x, FractionFieldElement) and (x.base_ring() is self.base_ring() or x.base_ring() == self.base_ring()) and isinstance(x.numerator(), (Polynomial, MPolynomial))): x = self(x.numerator()) / self(x.denominator()) diff --git a/src/sage/rings/number_field/splitting_field.py b/src/sage/rings/number_field/splitting_field.py index ef26176664a..7fefcd02ce5 100644 --- a/src/sage/rings/number_field/splitting_field.py +++ b/src/sage/rings/number_field/splitting_field.py @@ -21,7 +21,7 @@ from sage.arith.misc import factorial from sage.rings.number_field.number_field import NumberField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.rings.rational_field import RationalField, is_RationalField +from sage.rings.rational_field import RationalField from sage.libs.pari.all import pari, PariError @@ -382,7 +382,7 @@ def splitting_field(poly, name, map=False, degree_multiple=None, abort_degree=No # Kpol = PARI polynomial in y defining the extension found so far F = poly.base_ring() - if is_RationalField(F): + if isinstance(F, RationalField): Kpol = pari("'y") else: Kpol = F.pari_polynomial("y") diff --git a/src/sage/rings/padics/common_conversion.pyx b/src/sage/rings/padics/common_conversion.pyx index 0afddcc30a4..2a143e6d99e 100644 --- a/src/sage/rings/padics/common_conversion.pyx +++ b/src/sage/rings/padics/common_conversion.pyx @@ -148,7 +148,7 @@ cdef long get_ordp(x, PowComputer_class prime_pow) except? -10000: k = valp(pari_tmp) else: # t_INT and t_FRAC were converted before this function raise TypeError("unsupported coercion from pari: only p-adics, integers and rationals allowed") - elif sage.rings.finite_rings.integer_mod.is_IntegerMod(x): + elif isinstance(x, sage.rings.finite_rings.integer_mod.IntegerMod_abstract): value = x.lift() if mpz_sgn(value.value) == 0: return maxordp @@ -221,7 +221,7 @@ cdef long get_preccap(x, PowComputer_class prime_pow) except? -10000: pari_tmp = (x).g # since get_ordp has been called typ(x.g) == t_PADIC k = valp(pari_tmp) + precp(pari_tmp) - elif sage.rings.finite_rings.integer_mod.is_IntegerMod(x): + elif isinstance(x, sage.rings.finite_rings.integer_mod.IntegerMod_abstract): k = mpz_remove(temp.value, (x.modulus()).value, prime_pow.prime.value) if mpz_cmp_ui(temp.value, 1) != 0: raise TypeError("cannot coerce from the given integer mod ring (not a power of the same prime)") @@ -411,7 +411,7 @@ cdef inline int cconv_shared(mpz_t out, x, long prec, long valshift, PowComputer x = x.sage() if isinstance(x, pAdicGenericElement) and x.parent().is_relaxed(): x = x.lift(valshift + prec) - elif isinstance(x, pAdicGenericElement) or sage.rings.finite_rings.integer_mod.is_IntegerMod(x): + elif isinstance(x, pAdicGenericElement) or isinstance(x, sage.rings.finite_rings.integer_mod.IntegerMod_abstract): x = x.lift() if isinstance(x, Integer): if valshift > 0: diff --git a/src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx b/src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx index f10738d25d1..09062475876 100644 --- a/src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx +++ b/src/sage/rings/padics/padic_ZZ_pX_CA_element.pyx @@ -185,7 +185,7 @@ from sage.libs.ntl.ntl_ZZ_pContext cimport ntl_ZZ_pContext_class from sage.rings.padics.padic_generic_element cimport pAdicGenericElement from sage.libs.pari.all import pari_gen from sage.interfaces.abc import GpElement -from sage.rings.finite_rings.integer_mod import is_IntegerMod +from sage.rings.finite_rings.integer_mod import IntegerMod_abstract from sage.rings.finite_rings.integer_mod_ring import IntegerModRing from sage.rings.padics.padic_ext_element cimport pAdicExtElement from sage.rings.padics.precision_error import PrecisionError @@ -339,7 +339,7 @@ cdef class pAdicZZpXCAElement(pAdicZZpXElement): x = L else: raise TypeError("unsupported coercion from pari: only p-adics, integers, rationals, polynomials and pol_mods allowed") - elif is_IntegerMod(x): + elif isinstance(x, IntegerMod_abstract): mpz_init(tmp) ctx_prec = mpz_remove(tmp, (x.modulus()).value, self.prime_pow.prime.value) if mpz_cmp_ui(tmp, 1) == 0: diff --git a/src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx b/src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx index 8c29fa3ee73..3081c3f3d7a 100644 --- a/src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx +++ b/src/sage/rings/padics/padic_ZZ_pX_CR_element.pyx @@ -203,7 +203,7 @@ from sage.libs.ntl.ntl_ZZ_pContext cimport ntl_ZZ_pContext_class from sage.rings.padics.padic_generic_element cimport pAdicGenericElement from sage.libs.pari.all import pari_gen from sage.interfaces.abc import GpElement -from sage.rings.finite_rings.integer_mod import is_IntegerMod +from sage.rings.finite_rings.integer_mod import IntegerMod_abstract from sage.rings.padics.padic_ext_element cimport pAdicExtElement from sage.rings.padics.precision_error import PrecisionError @@ -354,7 +354,7 @@ cdef class pAdicZZpXCRElement(pAdicZZpXElement): x = L else: raise TypeError("unsupported coercion from pari: only p-adics, integers, rationals, polynomials and pol_mods allowed") - elif is_IntegerMod(x): + elif isinstance(x, IntegerMod_abstract): mpz_init(tmp) ctx_prec = mpz_remove(tmp, (x.modulus()).value, self.prime_pow.prime.value) if mpz_cmp_ui(tmp, 1) == 0: diff --git a/src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx b/src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx index 44d549847a9..f85c6b7f3b4 100644 --- a/src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx +++ b/src/sage/rings/padics/padic_ZZ_pX_FM_element.pyx @@ -145,7 +145,7 @@ from sage.libs.ntl.ntl_ZZ_pContext cimport ntl_ZZ_pContext_class from sage.rings.rational cimport Rational from sage.libs.pari.all import pari_gen from sage.interfaces.abc import GpElement -from sage.rings.finite_rings.integer_mod import is_IntegerMod +from sage.rings.finite_rings.integer_mod import IntegerMod_abstract from sage.rings.finite_rings.integer_mod_ring import IntegerModRing @@ -233,7 +233,7 @@ cdef class pAdicZZpXFMElement(pAdicZZpXElement): x = L else: raise TypeError("unsupported coercion from pari: only p-adics, integers, rationals, polynomials and pol_mods allowed") - elif is_IntegerMod(x): + elif isinstance(x, IntegerMod_abstract): if (x.modulus())._is_power_of(parent.prime()): x = x.lift() else: diff --git a/src/sage/rings/padics/padic_ZZ_pX_element.pyx b/src/sage/rings/padics/padic_ZZ_pX_element.pyx index bf892956a16..f6ed8fe4706 100644 --- a/src/sage/rings/padics/padic_ZZ_pX_element.pyx +++ b/src/sage/rings/padics/padic_ZZ_pX_element.pyx @@ -41,7 +41,7 @@ from sage.libs.ntl.ntl_ZZ_pContext import ntl_ZZ_pContext from sage.rings.integer cimport Integer from sage.rings.rational cimport Rational from sage.rings.padics.padic_generic_element cimport pAdicGenericElement -from sage.rings.finite_rings.integer_mod import is_IntegerMod +from sage.rings.finite_rings.integer_mod import IntegerMod_abstract from sage.rings.padics.padic_printing cimport pAdicPrinter_class from sage.rings.padics.pow_computer_ext cimport PowComputer_ext from sage.rings.rational_field import QQ @@ -664,7 +664,7 @@ cdef preprocess_list(pAdicZZpXElement elt, L): L[i] = ntl_ZZ_p(L[i]*pshift_m, ctx) elif isinstance(L[i], pAdicGenericElement) and L[i]._is_base_elt(elt.prime_pow.prime): L[i] = ntl_ZZ_p((L[i] >> min_val).lift(), ctx) - elif is_IntegerMod(L[i]): + elif isinstance(L[i], IntegerMod_abstract): L[i] = ntl_ZZ_p(L[i].lift()*pshift_m, ctx) elif (L[i].modulus_context() is not ctx) or min_val != zero: L[i] = ntl_ZZ_p(L[i].lift()*pshift_z, ctx) @@ -682,7 +682,7 @@ cdef preprocess_list(pAdicZZpXElement elt, L): L[i] = ntl_ZZ_p(L[i]//pshift_m, ctx) elif isinstance(L[i], pAdicGenericElement) and L[i]._is_base_elt(elt.prime_pow.prime): L[i] = ntl_ZZ_p((L[i] >> min_val).lift(), ctx) - elif is_IntegerMod(L[i]): + elif isinstance(L[i], IntegerMod_abstract): L[i] = ntl_ZZ_p(L[i].lift()//pshift_m, ctx) elif (L[i].modulus_context() is not ctx) or min_val != zero: ZZ_div(tmp, (L[i].lift()).x, pshift_z.x) @@ -693,7 +693,7 @@ cdef preprocess_list(pAdicZZpXElement elt, L): for i from 0 <= i < len(L): if isinstance(L[i], (ntl_ZZ, Integer, Rational, int)): L[i] = ntl_ZZ_p(L[i], ctx) - elif (isinstance(L[i], pAdicGenericElement) and L[i]._is_base_elt(elt.prime_pow.prime)) or is_IntegerMod(L[i]) or (L[i].modulus_context() is not ctx): + elif (isinstance(L[i], pAdicGenericElement) and L[i]._is_base_elt(elt.prime_pow.prime)) or isinstance(L[i], IntegerMod_abstract) or (L[i].modulus_context() is not ctx): L[i] = ntl_ZZ_p(L[i].lift(), ctx) return L, min_val, ctx @@ -889,7 +889,7 @@ cdef get_val_prec(PowComputer_ext pp, a): cdef mpz_t leftover cdef long long_val cdef Integer Integer_val - if is_IntegerMod(a): + if isinstance(a, IntegerMod_abstract): mpz_init(leftover) long_val = mpz_remove(leftover, (a.modulus()).value, pp.prime.value) if long_val > 0 and mpz_cmp_ui(leftover, 1) == 0: diff --git a/src/sage/rings/padics/padic_template_element.pxi b/src/sage/rings/padics/padic_template_element.pxi index 4b5b9c6dbe9..a3b203845b5 100644 --- a/src/sage/rings/padics/padic_template_element.pxi +++ b/src/sage/rings/padics/padic_template_element.pxi @@ -145,7 +145,7 @@ cdef class pAdicTemplateElement(pAdicGenericElement): x = [] else: x = [x] - elif sage.rings.finite_rings.integer_mod.is_IntegerMod(x): + elif isinstance(x, sage.rings.finite_rings.integer_mod.IntegerMod_abstract): if not Integer(self.prime_pow.prime).divides(x.parent().order()): raise TypeError("p does not divide modulus %s" % x.parent().order()) elif isinstance(x, Element) and isinstance(x.parent(), FiniteField): diff --git a/src/sage/rings/polynomial/flatten.py b/src/sage/rings/polynomial/flatten.py index 64ab7ed99d5..ef71d2b13a6 100644 --- a/src/sage/rings/polynomial/flatten.py +++ b/src/sage/rings/polynomial/flatten.py @@ -40,7 +40,7 @@ from .polynomial_ring_constructor import PolynomialRing from .polynomial_ring import is_PolynomialRing from .multi_polynomial_ring_base import is_MPolynomialRing -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.rings.fraction_field_element import FractionFieldElement from sage.rings.polynomial.polydict import ETuple @@ -538,8 +538,8 @@ def __init__(self, domain, D): # Construct unflattened codomain R new_vars = [] R = domain - while is_PolynomialRing(R) or is_MPolynomialRing(R) or is_FractionField(R): - if is_FractionField(R): + while is_PolynomialRing(R) or is_MPolynomialRing(R) or isinstance(R, FractionField_generic): + if isinstance(R, FractionField_generic): # We've hit base_ring, so set _sub_specialization and exit the loop field_over = R.base() applicable_vars = {key: val for key, val in D.items() @@ -679,7 +679,7 @@ def __init__(self, domain, D): To: Fraction Field of Multivariate Polynomial Ring in x, y over Univariate Polynomial Ring in a over Rational Field """ - if not is_FractionField(domain): + if not isinstance(domain, FractionField_generic): raise TypeError("domain must be a fraction field") self._specialization = SpecializationMorphism(domain.base(), D) self._repr_type_str = 'Fraction Specialization' diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx index cc31da00b9f..6b838190c52 100644 --- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx +++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx @@ -226,7 +226,7 @@ import sage.structure.element from sage.rings.rational cimport Rational from sage.rings.rational_field import QQ -from sage.rings.integer_ring import is_IntegerRing, ZZ +from sage.rings.integer_ring import IntegerRing_class, ZZ from sage.rings.integer cimport Integer from sage.rings.number_field.number_field_base cimport NumberField @@ -5489,7 +5489,7 @@ cdef class MPolynomial_libsingular(MPolynomial_libsingular_base): if n_GetChar(_ring.cf) > 1<<29: raise NotImplementedError("Resultants of multivariate polynomials over prime fields with characteristic > 2^29 is not implemented.") - if is_IntegerRing(self._parent._base): + if isinstance(self._parent._base, IntegerRing_class): ret = self.change_ring(QQ).resultant(other.change_ring(QQ), variable.change_ring(QQ)) return ret.change_ring(ZZ) diff --git a/src/sage/rings/polynomial/padics/polynomial_padic_flat.py b/src/sage/rings/polynomial/padics/polynomial_padic_flat.py index 6d25e6a0a5f..46ef0c0a9b9 100644 --- a/src/sage/rings/polynomial/padics/polynomial_padic_flat.py +++ b/src/sage/rings/polynomial/padics/polynomial_padic_flat.py @@ -31,7 +31,7 @@ def __init__(self, parent, x=None, check=True, is_gen=False, construct=False, ab Polynomial_generic_dense.__init__(self, parent, x, check, is_gen, construct) return R = parent.base_ring() - if sage.rings.fraction_field_element.is_FractionFieldElement(x): + if isinstance(x, sage.rings.fraction_field_element.FractionFieldElement): if x.denominator() != 1: raise TypeError("denominator must be 1") else: diff --git a/src/sage/rings/polynomial/plural.pyx b/src/sage/rings/polynomial/plural.pyx index 6a600f74f53..d78464e1deb 100644 --- a/src/sage/rings/polynomial/plural.pyx +++ b/src/sage/rings/polynomial/plural.pyx @@ -120,7 +120,7 @@ import sage.libs.singular.ring from sage.rings.finite_rings.finite_field_prime_modn import FiniteField_prime_modn from sage.rings.integer cimport Integer -from sage.rings.integer_ring import is_IntegerRing +from sage.rings.integer_ring import IntegerRing_class from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomialRing_libsingular, MPolynomial_libsingular, new_MP from sage.rings.polynomial.multi_polynomial_ideal import NCPolynomialIdeal @@ -532,7 +532,7 @@ cdef class NCPolynomialRing_plural(Ring): _p = p_NSet(_n, _ring) # also accepting ZZ - elif is_IntegerRing(element.parent()): + elif isinstance(element.parent(), IntegerRing_class): if isinstance(base_ring, FiniteField_prime_modn): _p = p_ISet(int(element),_ring) else: diff --git a/src/sage/rings/polynomial/polynomial_element.pyx b/src/sage/rings/polynomial/polynomial_element.pyx index 1270c42ce2a..370f864c2fb 100644 --- a/src/sage/rings/polynomial/polynomial_element.pyx +++ b/src/sage/rings/polynomial/polynomial_element.pyx @@ -54,7 +54,6 @@ AUTHORS: # https://www.gnu.org/licenses/ # **************************************************************************** -cdef is_FractionField cdef ZZ, QQ, RR, CC, RDF, CDF cimport cython @@ -103,11 +102,11 @@ from sage.structure.element import coerce_binop from sage.structure.element cimport (parent, have_same_parent, Element, RingElement) -from sage.rings.rational_field import QQ, is_RationalField -from sage.rings.integer_ring import ZZ, is_IntegerRing +from sage.rings.rational_field import QQ, RationalField +from sage.rings.integer_ring import ZZ, IntegerRing_class from sage.rings.integer cimport Integer, smallInteger from sage.libs.gmp.mpz cimport * -from sage.rings.fraction_field import FractionField, is_FractionField +from sage.rings.fraction_field import FractionField from sage.rings.padics.padic_generic import pAdicGeneric from sage.structure.category_object cimport normalize_names @@ -5026,7 +5025,7 @@ cdef class Polynomial(CommutativePolynomial): n = None - if isinstance(R, sage.rings.abc.IntegerModRing) or is_IntegerRing(R): + if isinstance(R, sage.rings.abc.IntegerModRing) or isinstance(R, IntegerRing_class): try: G = list(self._pari_with_name().factor()) except PariError: @@ -5840,7 +5839,7 @@ cdef class Polynomial(CommutativePolynomial): if self.degree() <= 1: return R.fraction_field() - if is_IntegerRing(R): + if isinstance(R, IntegerRing_class): from sage.rings.number_field.number_field import NumberField return NumberField(self, names) @@ -6411,7 +6410,7 @@ cdef class Polynomial(CommutativePolynomial): from sage.categories.number_fields import NumberFields K = self.base_ring() - if K in NumberFields() or isinstance(K, sage.rings.abc.Order) or is_IntegerRing(K): + if K in NumberFields() or isinstance(K, sage.rings.abc.Order) or isinstance(K, IntegerRing_class): from sage.schemes.projective.projective_space import ProjectiveSpace P = ProjectiveSpace(K, self.number_of_terms() - 1) return P.point(self.coefficients()).global_height(prec=prec) @@ -8931,7 +8930,7 @@ cdef class Polynomial(CommutativePolynomial): if L != K or isinstance(L, sage.rings.abc.AlgebraicField_common): # So far, the only "special" implementations are for real # and complex root isolation and for p-adic factorization - if (is_IntegerRing(K) or is_RationalField(K) + if (isinstance(K, IntegerRing_class) or isinstance(K, RationalField) or isinstance(K, sage.rings.abc.AlgebraicRealField)) and \ isinstance(L, (sage.rings.abc.AlgebraicRealField, sage.rings.abc.RealIntervalField)): @@ -8961,7 +8960,7 @@ cdef class Polynomial(CommutativePolynomial): else: return [rt for (rt, mult) in rts] - if (is_IntegerRing(K) or is_RationalField(K) + if (isinstance(K, IntegerRing_class) or isinstance(K, RationalField) or isinstance(K, sage.rings.abc.AlgebraicField_common) or input_gaussian) and \ isinstance(L, (sage.rings.abc.ComplexIntervalField, sage.rings.abc.AlgebraicField_common)): @@ -9992,8 +9991,8 @@ cdef class Polynomial(CommutativePolynomial): else: raise NotImplementedError else: - from sage.rings.fraction_field import is_FractionField - if is_FractionField(p.parent()) and self._parent.has_coerce_map_from(p.parent().ring()): + from sage.rings.fraction_field import FractionField_generic + if isinstance(p.parent(), FractionField_generic) and self._parent.has_coerce_map_from(p.parent().ring()): _p = self._parent.coerce(p.parent().ring()(p)) # here we require that p be integral. else: raise TypeError("The polynomial, p, must have the same parent as self.") @@ -11983,7 +11982,7 @@ cdef class Polynomial_generic_dense(Polynomial): self._coeffs = x return - if sage.rings.fraction_field_element.is_FractionFieldElement(x): + if isinstance(x, sage.rings.fraction_field_element.FractionFieldElement): if x.denominator() != 1: raise TypeError("denominator must be 1") else: diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py index 3d066e68631..ee7c243087f 100644 --- a/src/sage/rings/polynomial/polynomial_singular_interface.py +++ b/src/sage/rings/polynomial/polynomial_singular_interface.py @@ -40,7 +40,7 @@ import sage.rings.abc import sage.rings.number_field as number_field -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.function_field.function_field_rational import RationalFunctionField from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.integer_ring import ZZ @@ -74,7 +74,7 @@ def _do_singular_init_(singular, base_ring, char, _vars, order): if base_ring is ZZ: return make_ring("(ZZ)"), None - if sage.rings.rational_field.is_RationalField(base_ring): + if isinstance(base_ring, sage.rings.rational_field.RationalField): return make_ring("(QQ)"), None elif isinstance(base_ring, sage.rings.abc.RealField): @@ -136,7 +136,7 @@ def _do_singular_init_(singular, base_ring, char, _vars, order): return R, minpoly - elif sage.rings.fraction_field.is_FractionField(base_ring): + elif isinstance(base_ring, sage.rings.fraction_field.FractionField_generic): if base_ring.ngens() == 1: gens = str(base_ring.gen()) else: @@ -430,7 +430,7 @@ def can_convert_to_singular(R): base_ring = R.base_ring() if (base_ring is ZZ - or is_RationalField(base_ring) + or isinstance(base_ring, RationalField) or isinstance(base_ring, (sage.rings.abc.IntegerModRing, sage.rings.abc.RealField, sage.rings.abc.ComplexField, sage.rings.abc.RealDoubleField, sage.rings.abc.ComplexDoubleField))): @@ -439,7 +439,7 @@ def can_convert_to_singular(R): return base_ring.characteristic() <= 2147483647 elif isinstance(base_ring, NumberField): return base_ring.is_absolute() - elif sage.rings.fraction_field.is_FractionField(base_ring): + elif isinstance(base_ring, sage.rings.fraction_field.FractionField_generic): B = base_ring.base_ring() return (B.is_prime_field() or B is ZZ or (isinstance(B, FiniteField) and B.characteristic() <= 2147483647)) diff --git a/src/sage/rings/qqbar.py b/src/sage/rings/qqbar.py index f6d391679a6..17b8559e34c 100644 --- a/src/sage/rings/qqbar.py +++ b/src/sage/rings/qqbar.py @@ -594,7 +594,7 @@ from sage.rings import infinity from sage.rings.cc import CC from sage.rings.cif import CIF -from sage.rings.complex_interval import is_ComplexIntervalFieldElement +from sage.rings.complex_interval import ComplexIntervalFieldElement from sage.rings.complex_interval_field import ComplexIntervalField from sage.rings.integer_ring import ZZ from sage.rings.number_field.number_field import ( @@ -613,7 +613,7 @@ RIF, RealIntervalField, RealIntervalField_class, - is_RealIntervalFieldElement, + RealIntervalFieldElement, ) from sage.rings.real_mpfr import RR from sage.structure.coerce import parent_is_numerical, parent_is_real_numerical @@ -1436,7 +1436,7 @@ def polynomial_root(self, poly, interval, multiplicity=1): sage: r = AA.polynomial_root(p, RIF(1, 2)); r^3 2.000000000000000? """ - if not is_RealIntervalFieldElement(interval): + if not isinstance(interval, RealIntervalFieldElement): raise ValueError("interval argument of .polynomial_root on algebraic real field must be real") return AlgebraicReal(ANRoot(poly, interval, multiplicity)) @@ -2489,7 +2489,7 @@ def conjugate_expand(v): sage: conjugate_expand(RIF(1, 2)).str(style='brackets') '[1.0000000000000000 .. 2.0000000000000000]' """ - if is_RealIntervalFieldElement(v): + if isinstance(v, RealIntervalFieldElement): return v im = v.imag() if not im.contains_zero(): @@ -2522,7 +2522,7 @@ def conjugate_shrink(v): sage: conjugate_shrink(CIF(RIF(1, 2), RIF(-1, 2))).str(style='brackets') '[1.0000000000000000 .. 2.0000000000000000]' """ - if is_RealIntervalFieldElement(v): + if isinstance(v, RealIntervalFieldElement): return v im = v.imag() if im.contains_zero(): @@ -4507,9 +4507,9 @@ def _set_descr(self, new_descr): """ self._descr = new_descr new_val = self._descr._interval_fast(self.parent().default_interval_prec()) - if is_RealIntervalFieldElement(new_val) and is_ComplexIntervalFieldElement(self._value): + if isinstance(new_val, RealIntervalFieldElement) and isinstance(self._value, ComplexIntervalFieldElement): self._value = self._value.real().intersection(new_val) - elif is_RealIntervalFieldElement(self._value) and is_ComplexIntervalFieldElement(new_val): + elif isinstance(self._value, RealIntervalFieldElement) and isinstance(new_val, ComplexIntervalFieldElement): self._value = self._value.intersection(new_val.real()) else: self._value = self._value.intersection(new_val) @@ -4757,7 +4757,7 @@ def interval(self, field): target = RR(1.0) >> field.prec() val = self.interval_diameter(target) if (isinstance(field, (RealIntervalField_class, RealBallField)) - and is_ComplexIntervalFieldElement(val)): + and isinstance(val, ComplexIntervalFieldElement)): if val.imag().is_zero(): return field(val.real()) elif self.imag().is_zero(): @@ -4826,7 +4826,7 @@ def radical_expression(self): # Adapted from NumberFieldElement._symbolic_() poly = self.minpoly() - if is_ComplexIntervalFieldElement(self._value): + if isinstance(self._value, ComplexIntervalFieldElement): interval_field = self._value.parent() else: interval_field = ComplexIntervalField(self._value.prec()) @@ -5484,7 +5484,7 @@ def _ensure_real(self): sage: type(b._value) """ - if is_ComplexIntervalFieldElement(self._value): + if isinstance(self._value, ComplexIntervalFieldElement): self._value = self._value.real() def _more_precision(self): @@ -6467,7 +6467,7 @@ def _act_(self, e, x): argument = argument - 2 * argument.parent().pi() else: val = x._interval_fast(prec) - if is_RealIntervalFieldElement(val) or not val.crosses_log_branch_cut(): + if isinstance(val, RealIntervalFieldElement) or not val.crosses_log_branch_cut(): argument = val.argument() if val.imag().is_zero() and val.real() < 0: argument_is_pi = True @@ -6749,12 +6749,20 @@ def is_AlgebraicReal(x): sage: from sage.rings.qqbar import is_AlgebraicReal sage: is_AlgebraicReal(AA(sqrt(2))) # needs sage.symbolic + doctest:warning... + DeprecationWarning: The function is_AlgebraicReal is deprecated; + use 'isinstance(..., AlgebraicReal)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_AlgebraicReal(QQbar(sqrt(2))) # needs sage.symbolic False sage: is_AlgebraicReal("spam") False """ + from sage.misc.superseded import deprecation + deprecation(38128, + "The function is_AlgebraicReal is deprecated; " + "use 'isinstance(..., AlgebraicReal)' instead.") return isinstance(x, AlgebraicReal) @@ -6766,12 +6774,20 @@ def is_AlgebraicNumber(x): sage: from sage.rings.qqbar import is_AlgebraicNumber sage: is_AlgebraicNumber(AA(sqrt(2))) # needs sage.symbolic + doctest:warning... + DeprecationWarning: The function is_AlgebraicNumber is deprecated; + use 'isinstance(..., AlgebraicNumber)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. False sage: is_AlgebraicNumber(QQbar(sqrt(2))) # needs sage.symbolic True sage: is_AlgebraicNumber("spam") False """ + from sage.misc.superseded import deprecation + deprecation(38128, + "The function is_AlgebraicNumber is deprecated; " + "use 'isinstance(..., AlgebraicNumber)' instead.") return isinstance(x, AlgebraicNumber) @@ -7052,7 +7068,7 @@ def __init__(self, poly, interval, multiplicity=1): poly = AlgebraicPolynomialTracker(poly) self._poly = poly self._multiplicity = multiplicity - self._complex = is_ComplexIntervalFieldElement(interval) + self._complex = isinstance(interval, ComplexIntervalFieldElement) self._complex_poly = poly.is_complex() self._interval = self.refine_interval(interval, 64) @@ -7138,7 +7154,7 @@ def handle_sage_input(self, sib, coerce, is_qqbar): intv = self._interval # Check whether a 53-bit interval actually isolates the root. # If so, use it, because 53-bit intervals print prettier. - if is_ComplexIntervalFieldElement(intv): + if isinstance(intv, ComplexIntervalFieldElement): loose_intv = CIF(intv) else: loose_intv = RIF(intv) @@ -7988,7 +8004,7 @@ def simplify(self, n): def _interval_fast(self, prec): gen_val = self._generator._interval_fast(prec) v = self._value.polynomial()(gen_val) - if self._exactly_real and is_ComplexIntervalFieldElement(v): + if self._exactly_real and isinstance(v, ComplexIntervalFieldElement): return v.real() return v @@ -8337,7 +8353,7 @@ def _interval_fast(self, prec): v = self._arg._interval_fast(prec) - if not is_ComplexIntervalFieldElement(v): + if not isinstance(v, ComplexIntervalFieldElement): self._complex = False if op == '-': @@ -8347,7 +8363,7 @@ def _interval_fast(self, prec): return ~v if op == 'conjugate': - if is_ComplexIntervalFieldElement(v): + if isinstance(v, ComplexIntervalFieldElement): return v.conjugate() else: return v @@ -8355,13 +8371,13 @@ def _interval_fast(self, prec): self._complex = False if op == 'real': - if is_ComplexIntervalFieldElement(v): + if isinstance(v, ComplexIntervalFieldElement): return v.real() else: return v if op == 'imag': - if is_ComplexIntervalFieldElement(v): + if isinstance(v, ComplexIntervalFieldElement): return v.imag() else: return RealIntervalField(prec)(0) @@ -8370,7 +8386,7 @@ def _interval_fast(self, prec): return abs(v) if op == 'norm': - if is_ComplexIntervalFieldElement(v): + if isinstance(v, ComplexIntervalFieldElement): return v.norm() else: return v.square() @@ -8611,7 +8627,7 @@ def _interval_fast(self, prec): lv = self._left._interval_fast(prec) rv = self._right._interval_fast(prec) - if not (is_ComplexIntervalFieldElement(lv) or is_ComplexIntervalFieldElement(rv)): + if not (isinstance(lv, ComplexIntervalFieldElement) or isinstance(rv, ComplexIntervalFieldElement)): self._complex = False return op(lv, rv) diff --git a/src/sage/rings/rational.pyx b/src/sage/rings/rational.pyx index 1faece8f298..819a85dbc35 100644 --- a/src/sage/rings/rational.pyx +++ b/src/sage/rings/rational.pyx @@ -393,6 +393,10 @@ def is_Rational(x): sage: from sage.rings.rational import is_Rational sage: is_Rational(2) + doctest:warning... + DeprecationWarning: The function is_Rational is deprecated; + use 'isinstance(..., Rational)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. False sage: is_Rational(2/1) True @@ -401,6 +405,10 @@ def is_Rational(x): sage: is_Rational('5') False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_Rational is deprecated; " + "use 'isinstance(..., Rational)' instead.") return isinstance(x, Rational) diff --git a/src/sage/rings/rational_field.py b/src/sage/rings/rational_field.py index 5234ea105e2..62d85cf3380 100644 --- a/src/sage/rings/rational_field.py +++ b/src/sage/rings/rational_field.py @@ -1701,10 +1701,18 @@ def is_RationalField(x) -> bool: sage: from sage.rings.rational_field import is_RationalField as is_RF sage: is_RF(QQ) + doctest:warning... + DeprecationWarning: The function is_RationalField is deprecated; + use 'isinstance(..., RationalField)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_RF(ZZ) False """ + from sage.misc.superseded import deprecation + deprecation(38128, + "The function is_RationalField is deprecated; " + "use 'isinstance(..., RationalField)' instead.") return isinstance(x, RationalField) diff --git a/src/sage/rings/real_double.pyx b/src/sage/rings/real_double.pyx index de1f843ce87..d0ef9a4bb62 100644 --- a/src/sage/rings/real_double.pyx +++ b/src/sage/rings/real_double.pyx @@ -2055,10 +2055,18 @@ def is_RealDoubleElement(x): sage: from sage.rings.real_double import is_RealDoubleElement sage: is_RealDoubleElement(RDF(3)) + doctest:warning... + DeprecationWarning: The function is_RealDoubleElement is deprecated; + use 'isinstance(..., RealDoubleElement)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_RealDoubleElement(RIF(3)) # needs sage.rings.real_interval_field False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_RealDoubleElement is deprecated; " + "use 'isinstance(..., RealDoubleElement)' instead.") return isinstance(x, RealDoubleElement) diff --git a/src/sage/rings/real_mpfi.pyx b/src/sage/rings/real_mpfi.pyx index 7007f1da8d7..95b472e912c 100644 --- a/src/sage/rings/real_mpfi.pyx +++ b/src/sage/rings/real_mpfi.pyx @@ -5332,10 +5332,18 @@ def is_RealIntervalField(x): EXAMPLES:: sage: sage.rings.real_mpfi.is_RealIntervalField(RIF) + doctest:warning... + DeprecationWarning: The function is_RealIntervalField is deprecated; + use 'isinstance(..., RealIntervalField_class)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: sage.rings.real_mpfi.is_RealIntervalField(RealIntervalField(200)) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_RealIntervalField is deprecated; " + "use 'isinstance(..., RealIntervalField_class)' instead.") return isinstance(x, RealIntervalField_class) @@ -5346,10 +5354,18 @@ def is_RealIntervalFieldElement(x): EXAMPLES:: sage: sage.rings.real_mpfi.is_RealIntervalFieldElement(RIF(2.2)) + doctest:warning... + DeprecationWarning: The function is_RealIntervalFieldElement is deprecated; + use 'isinstance(..., RealIntervalFieldElement)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: sage.rings.real_mpfi.is_RealIntervalFieldElement(RealIntervalField(200)(2.2)) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_RealIntervalFieldElement is deprecated; " + "use 'isinstance(..., RealIntervalFieldElement)' instead.") return isinstance(x, RealIntervalFieldElement) diff --git a/src/sage/rings/real_mpfr.pyx b/src/sage/rings/real_mpfr.pyx index 885003ed7f8..9e905c9c721 100644 --- a/src/sage/rings/real_mpfr.pyx +++ b/src/sage/rings/real_mpfr.pyx @@ -5886,6 +5886,10 @@ def is_RealNumber(x): sage: from sage.rings.real_mpfr import is_RealNumber sage: is_RealNumber(2.5) + doctest:warning... + DeprecationWarning: The function is_RealNumber is deprecated; + use 'isinstance(..., RealNumber)' instead. + See https://github.com/sagemath/sage/issues/38128 for details. True sage: is_RealNumber(float(2.3)) False @@ -5894,6 +5898,10 @@ def is_RealNumber(x): sage: is_RealNumber(pi) # needs sage.symbolic False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38128, + "The function is_RealNumber is deprecated; " + "use 'isinstance(..., RealNumber)' instead.") return isinstance(x, RealNumber) diff --git a/src/sage/schemes/affine/affine_homset.py b/src/sage/schemes/affine/affine_homset.py index 1a5dd8477ab..f90bcfffec1 100644 --- a/src/sage/schemes/affine/affine_homset.py +++ b/src/sage/schemes/affine/affine_homset.py @@ -38,7 +38,7 @@ from sage.rings.integer_ring import ZZ from sage.rings.real_mpfr import RR from sage.rings.cc import CC -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.categories.fields import Fields from sage.categories.number_fields import NumberFields from sage.rings.finite_rings.finite_field_base import FiniteField @@ -349,7 +349,7 @@ def points(self, **kwds): B = kwds.pop('bound', 0) tol = kwds.pop('tolerance', 1e-2) prec = kwds.pop('precision', 53) - if is_RationalField(R) or R == ZZ: + if isinstance(R, RationalField) or R == ZZ: if not B > 0: raise TypeError("a positive bound B (= %s) must be specified" % B) from sage.schemes.affine.affine_rational_point import enum_affine_rational_field diff --git a/src/sage/schemes/affine/affine_space.py b/src/sage/schemes/affine/affine_space.py index 572d39bad51..889d9005ed6 100644 --- a/src/sage/schemes/affine/affine_space.py +++ b/src/sage/schemes/affine/affine_space.py @@ -14,7 +14,7 @@ from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.polynomial.polynomial_ring import is_PolynomialRing from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing from sage.rings.finite_rings.finite_field_base import FiniteField @@ -1063,7 +1063,7 @@ def points_of_bounded_height(self, **kwds): sage: len(list(A.points_of_bounded_height(bound=2, tolerance=0.1))) # needs sage.rings.number_field 529 """ - if is_RationalField(self.base_ring()): + if isinstance(self.base_ring(), RationalField): ftype = False # stores whether field is a number field or the rational field elif self.base_ring() in NumberFields(): # true for rational field as well, so check is_RationalField first ftype = True diff --git a/src/sage/schemes/berkovich/berkovich_cp_element.py b/src/sage/schemes/berkovich/berkovich_cp_element.py index bd641bd05a2..a9299e4e732 100644 --- a/src/sage/schemes/berkovich/berkovich_cp_element.py +++ b/src/sage/schemes/berkovich/berkovich_cp_element.py @@ -36,7 +36,7 @@ from sage.structure.element import Element from sage.structure.element import Expression import sage.rings.abc -from sage.rings.real_mpfr import RR, is_RealNumber +from sage.rings.real_mpfr import RR, RealNumber from sage.rings.padics.padic_generic_element import pAdicGenericElement from sage.rings.padics.padic_base_generic import pAdicBaseGeneric from sage.schemes.projective.projective_space import ProjectiveSpace @@ -215,7 +215,7 @@ def __init__(self, parent, center, radius=None, power=None, prec=20, space_type= # since we are over a field, we can normalize coordinates. all code assumes normalized coordinates center.normalize_coordinates() # make sure the radius coerces into the reals - if not is_RealNumber(radius): + if not isinstance(radius, RealNumber): if isinstance(radius, Expression): radius = RR(radius) elif RR.has_coerce_map_from(radius.parent()): @@ -258,7 +258,7 @@ def __init__(self, parent, center, radius=None, power=None, prec=20, space_type= except (TypeError, ValueError): raise ValueError('could not convert %s to %s' % (center, self._base_space)) # make sure the radius coerces into the reals - if not is_RealNumber(radius): + if not isinstance(radius, RealNumber): if isinstance(radius, Expression): radius = RR(radius) elif RR.has_coerce_map_from(radius.parent()): @@ -388,7 +388,7 @@ def __init__(self, parent, center, radius=None, power=None, prec=20, space_type= raise ValueError('radius univariate function but center is constant. ' + 'this does not define a type IV point') raise TypeError("symbolic radius must be a real number") - if (not is_RealNumber(radius)) and power is None: + if (not isinstance(radius, RealNumber)) and power is None: if RR.has_coerce_map_from(radius.parent()): self._radius = RR(radius) else: diff --git a/src/sage/schemes/curves/affine_curve.py b/src/sage/schemes/curves/affine_curve.py index f8e5dc4bfbe..dbdb2dfa4cd 100644 --- a/src/sage/schemes/curves/affine_curve.py +++ b/src/sage/schemes/curves/affine_curve.py @@ -145,7 +145,7 @@ from sage.rings.polynomial.multi_polynomial_element import degree_lowest_rational_function from sage.rings.number_field.number_field import NumberField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.infinity import infinity from sage.schemes.affine.affine_space import AffineSpace, AffineSpace_generic @@ -1548,10 +1548,10 @@ def extension(self): pts = self.change_ring(F.embeddings(QQbar)[0]).rational_points() L = [t for pt in pts for t in pt] K = number_field_elements_from_algebraics(L)[0] - if is_RationalField(K): + if isinstance(K, RationalField): return F.embeddings(F)[0] else: - if is_RationalField(F): + if isinstance(F, RationalField): return F.embeddings(K)[0] else: # make sure the defining polynomial variable names are the same for K, N diff --git a/src/sage/schemes/curves/projective_curve.py b/src/sage/schemes/curves/projective_curve.py index cec2e08e96b..6045cc3ea70 100644 --- a/src/sage/schemes/curves/projective_curve.py +++ b/src/sage/schemes/curves/projective_curve.py @@ -154,7 +154,7 @@ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.qqbar import (number_field_elements_from_algebraics, QQbar) -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.integer import Integer from sage.schemes.projective.projective_space import ProjectiveSpace, ProjectiveSpace_ring @@ -1458,10 +1458,10 @@ def extension(self): pts = self.change_ring(F.embeddings(QQbar)[0]).rational_points() L = [t for pt in pts for t in pt] K = number_field_elements_from_algebraics(L)[0] - if is_RationalField(K): + if isinstance(K, RationalField): return F.embeddings(F)[0] else: - if is_RationalField(F): + if isinstance(F, RationalField): return F.embeddings(K)[0] else: # make sure the defining polynomial variable names are the same for K, N @@ -1862,7 +1862,7 @@ def rational_parameterization(self): """ if self.genus(): raise TypeError("this curve must have geometric genus zero") - if not is_RationalField(self.base_ring()): + if not isinstance(self.base_ring(), RationalField): raise TypeError("this curve must be defined over the rational field") singular.lib("paraplanecurves.lib") R = singular.paraPlaneCurve(self.defining_polynomial()) diff --git a/src/sage/schemes/generic/algebraic_scheme.py b/src/sage/schemes/generic/algebraic_scheme.py index f442ff309b3..8cc0e544917 100644 --- a/src/sage/schemes/generic/algebraic_scheme.py +++ b/src/sage/schemes/generic/algebraic_scheme.py @@ -118,7 +118,7 @@ from sage.rings.ideal import is_Ideal from sage.rings.integer_ring import ZZ -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.finite_rings.finite_field_base import FiniteField from sage.misc.latex import latex @@ -873,7 +873,7 @@ def rational_points(self, **kwds): F = self.base_ring() if bound == 0: - if is_RationalField(F): + if isinstance(F, RationalField): raise TypeError("A positive bound (= %s) must be specified." % bound) if not isinstance(F, FiniteField): raise TypeError("Argument F (= %s) must be a finite field." % F) diff --git a/src/sage/schemes/generic/morphism.py b/src/sage/schemes/generic/morphism.py index 9986dea97ff..8034d0b9b5a 100644 --- a/src/sage/schemes/generic/morphism.py +++ b/src/sage/schemes/generic/morphism.py @@ -82,7 +82,7 @@ from sage.structure.sequence import Sequence from sage.categories.homset import Homset, Hom, End from sage.rings.fraction_field_element import FractionFieldElement -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.categories.map import FormalCompositeMap, Map from sage.misc.constant_function import ConstantFunction from sage.misc.lazy_attribute import lazy_attribute @@ -1643,7 +1643,7 @@ def specialization(self, D=None, phi=None, homset=None): if phi is None: raise ValueError("either the dictionary or the specialization must be provided") else: - if is_FractionField(self[0].parent()): + if isinstance(self[0].parent(), FractionField_generic): from sage.rings.polynomial.flatten import FractionSpecializationMorphism phi = FractionSpecializationMorphism(self[0].parent(), D) else: diff --git a/src/sage/schemes/hyperelliptic_curves/constructor.py b/src/sage/schemes/hyperelliptic_curves/constructor.py index 16526fec853..46d01cfd2cb 100644 --- a/src/sage/schemes/hyperelliptic_curves/constructor.py +++ b/src/sage/schemes/hyperelliptic_curves/constructor.py @@ -26,7 +26,7 @@ from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.polynomial.polynomial_element import Polynomial -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.structure.dynamic_class import dynamic_class @@ -269,20 +269,14 @@ def HyperellipticCurve(f, h=0, names=None, PP=None, check_squarefree=True): # For certain base fields, we specialise to subclasses # with special case methods - def is_FiniteField(x): - return isinstance(x, FiniteField) - - def is_pAdicField(x): - return isinstance(x, sage.rings.abc.pAdicField) - fields = [ - ("FiniteField", is_FiniteField, HyperellipticCurve_finite_field), - ("RationalField", is_RationalField, HyperellipticCurve_rational_field), - ("pAdicField", is_pAdicField, HyperellipticCurve_padic_field), + ("FiniteField", FiniteField, HyperellipticCurve_finite_field), + ("RationalField", RationalField, HyperellipticCurve_rational_field), + ("pAdicField", sage.rings.abc.pAdicField, HyperellipticCurve_padic_field), ] - for name, test, cls in fields: - if test(R): + for name, base_ring_cls, cls in fields: + if isinstance(R, base_ring_cls): bases.append(cls) cls_name.append(name) break diff --git a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py index 88b28a4b753..2a192248180 100644 --- a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py +++ b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py @@ -44,7 +44,7 @@ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.integer_ring import ZZ -from sage.rings.integer import is_Integer, Integer +from sage.rings.integer import Integer from sage.rings.polynomial.polynomial_element import Polynomial from sage.schemes.generic.homset import SchemeHomset_points @@ -124,16 +124,16 @@ def __call__(self, P): elif len(P) == 2: P1 = P[0] P2 = P[1] - if is_Integer(P1) and is_Integer(P2): + if isinstance(P1, Integer) and isinstance(P2, Integer): R = PolynomialRing(self.value_ring(), 'x') P1 = R(P1) P2 = R(P2) return JacobianMorphism_divisor_class_field(self, (P1, P2)) - if is_Integer(P1) and isinstance(P2, Polynomial): + if isinstance(P1, Integer) and isinstance(P2, Polynomial): R = PolynomialRing(self.value_ring(), 'x') P1 = R(P1) return JacobianMorphism_divisor_class_field(self, (P1, P2)) - if is_Integer(P2) and isinstance(P1, Polynomial): + if isinstance(P2, Integer) and isinstance(P1, Polynomial): R = PolynomialRing(self.value_ring(), 'x') P2 = R(P2) return JacobianMorphism_divisor_class_field(self, (P1, P2)) diff --git a/src/sage/schemes/plane_conics/con_number_field.py b/src/sage/schemes/plane_conics/con_number_field.py index f044b884932..393b77bc1ff 100644 --- a/src/sage/schemes/plane_conics/con_number_field.py +++ b/src/sage/schemes/plane_conics/con_number_field.py @@ -21,7 +21,7 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from .con_field import ProjectiveConic_field @@ -305,7 +305,7 @@ def has_rational_point(self, point=False, obstruction=False, if point or obstruction: return True, pt return True - if is_RationalField(B): + if isinstance(B, RationalField): K = B [KtoB, BtoK] = [K.hom(K) for i in range(2)] else: diff --git a/src/sage/schemes/plane_conics/con_rational_function_field.py b/src/sage/schemes/plane_conics/con_rational_function_field.py index fec1a50fdbb..bc842415d8e 100644 --- a/src/sage/schemes/plane_conics/con_rational_function_field.py +++ b/src/sage/schemes/plane_conics/con_rational_function_field.py @@ -44,7 +44,7 @@ from sage.arith.functions import lcm from sage.arith.misc import GCD as gcd from sage.modules.free_module_element import vector -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic class ProjectiveConic_rational_function_field(ProjectiveConic_field): @@ -392,7 +392,7 @@ def _reduce_conic(self): # remove squares for i, x in enumerate(coeff): - if is_FractionField(x.parent()): + if isinstance(x.parent(), FractionField_generic): # go to base ring of fraction field x = self.base().base()(x) diff --git a/src/sage/schemes/plane_conics/constructor.py b/src/sage/schemes/plane_conics/constructor.py index 10e158514dc..308b56f6db0 100644 --- a/src/sage/schemes/plane_conics/constructor.py +++ b/src/sage/schemes/plane_conics/constructor.py @@ -26,9 +26,9 @@ from sage.matrix.constructor import matrix from sage.modules.free_module_element import vector from sage.categories.integral_domains import IntegralDomains -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.rings.finite_rings.finite_field_base import FiniteField -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.rings.number_field.number_field_base import NumberField from sage.rings.polynomial.multi_polynomial import MPolynomial @@ -238,11 +238,11 @@ def Conic(base_field, F=None, names=None, unique=True): P2 = ProjectiveSpace(2, base_field, names) if isinstance(base_field, FiniteField): return ProjectiveConic_finite_field(P2, F) - if is_RationalField(base_field): + if isinstance(base_field, RationalField): return ProjectiveConic_rational_field(P2, F) if isinstance(base_field, NumberField): return ProjectiveConic_number_field(P2, F) - if is_FractionField(base_field) and (is_PolynomialRing(base_field.ring()) or is_MPolynomialRing(base_field.ring())): + if isinstance(base_field, FractionField_generic) and (is_PolynomialRing(base_field.ring()) or is_MPolynomialRing(base_field.ring())): return ProjectiveConic_rational_function_field(P2, F) return ProjectiveConic_field(P2, F) diff --git a/src/sage/schemes/product_projective/homset.py b/src/sage/schemes/product_projective/homset.py index 590030762e1..ef135a2cd6b 100644 --- a/src/sage/schemes/product_projective/homset.py +++ b/src/sage/schemes/product_projective/homset.py @@ -23,7 +23,7 @@ from sage.misc.mrange import xmrange from sage.misc.misc_c import prod from sage.rings.finite_rings.finite_field_base import FiniteField -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme from sage.schemes.generic.homset import SchemeHomset_points @@ -199,7 +199,7 @@ def points(self, **kwds): return list(points) R = self.value_ring() points = [] - if is_RationalField(R): + if isinstance(R, RationalField): if not B > 0: raise TypeError("a positive bound B (= %s) must be specified" % B) alg = kwds.pop('algorithm', None) diff --git a/src/sage/schemes/projective/projective_homset.py b/src/sage/schemes/projective/projective_homset.py index a64ceabca4e..bc1a781c00b 100644 --- a/src/sage/schemes/projective/projective_homset.py +++ b/src/sage/schemes/projective/projective_homset.py @@ -44,7 +44,7 @@ from sage.misc.verbose import verbose -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.categories.fields import Fields from sage.categories.number_fields import NumberFields from sage.rings.finite_rings.finite_field_base import FiniteField @@ -274,7 +274,7 @@ def points(self, **kwds): B = kwds.pop('bound', 0) tol = kwds.pop('tolerance', 1e-2) prec = kwds.pop('precision', 53) - if is_RationalField(R): + if isinstance(R, RationalField): if not B > 0: raise TypeError("a positive bound B (= %s) must be specified" % B) if isinstance(X, AlgebraicScheme_subscheme): # sieve should only be called for subschemes diff --git a/src/sage/schemes/projective/projective_space.py b/src/sage/schemes/projective/projective_space.py index ded40bb85b5..c05588f4698 100644 --- a/src/sage/schemes/projective/projective_space.py +++ b/src/sage/schemes/projective/projective_space.py @@ -88,7 +88,7 @@ from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing from sage.rings.polynomial.polynomial_ring import is_PolynomialRing from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.rings.rational_field import QQ, is_RationalField +from sage.rings.rational_field import QQ, RationalField from sage.rings.fraction_field import FractionField from sage.rings.number_field.order import Order @@ -264,7 +264,7 @@ def ProjectiveSpace(n, R=None, names=None): if R in _Fields: if isinstance(R, FiniteField): return ProjectiveSpace_finite_field(n, R, names) - if is_RationalField(R): + if isinstance(R, RationalField): return ProjectiveSpace_rational_field(n, R, names) else: return ProjectiveSpace_field(n, R, names) @@ -1170,10 +1170,10 @@ def points_of_bounded_height(self, **kwds): # or the ring of integers is_ring_of_ints = False - if is_RationalField(R): + if isinstance(R, RationalField): field_type = False elif R in NumberFields(): - # True for the rational field as well, so check is_RationalField first + # True for the rational field as well, so check RationalField first field_type = True elif (R is ZZ) or (isinstance(R, Order) and R.is_integrally_closed()): # Ensure ring of integers / maximal order is_ring_of_ints = True diff --git a/src/sage/schemes/projective/projective_subscheme.py b/src/sage/schemes/projective/projective_subscheme.py index f3e93cd65a5..6135a62b1cb 100644 --- a/src/sage/schemes/projective/projective_subscheme.py +++ b/src/sage/schemes/projective/projective_subscheme.py @@ -30,7 +30,7 @@ from sage.rings.integer_ring import ZZ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.rings.rational_field import is_RationalField +from sage.rings.rational_field import RationalField from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme from sage.schemes.projective.projective_morphism import SchemeMorphism_polynomial_projective_subscheme_field @@ -975,7 +975,7 @@ def dual(self): from sage.libs.singular.function_factory import ff K = self.base_ring() - if not (is_RationalField(K) or K in Fields().Finite()): + if not (isinstance(K, RationalField) or K in Fields().Finite()): raise NotImplementedError("base ring must be QQ or a finite field") I = self.defining_ideal() m = I.ngens() diff --git a/src/sage/schemes/toric/fano_variety.py b/src/sage/schemes/toric/fano_variety.py index d7772aa2ca4..c17cf7c37d7 100644 --- a/src/sage/schemes/toric/fano_variety.py +++ b/src/sage/schemes/toric/fano_variety.py @@ -130,7 +130,7 @@ from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing from sage.rings.polynomial.polynomial_ring import is_PolynomialRing -from sage.rings.fraction_field import is_FractionField +from sage.rings.fraction_field import FractionField_generic from sage.schemes.toric.toric_subscheme import AlgebraicScheme_subscheme_toric from sage.schemes.toric.variety import ( @@ -1590,7 +1590,7 @@ def add_variables(field, variables): """ if not variables: return field - if is_FractionField(field): + if isinstance(field, FractionField_generic): # Q(a) ---> Q(a, b) rather than Q(a)(b) R = field.ring() if is_PolynomialRing(R) or is_MPolynomialRing(R): diff --git a/src/sage/sets/set.py b/src/sage/sets/set.py index 00c604a07d8..2a5c8c86f23 100644 --- a/src/sage/sets/set.py +++ b/src/sage/sets/set.py @@ -491,8 +491,8 @@ def __init__(self, X, category=None): '' and 'Integer Ring' """ - from sage.rings.integer import is_Integer - if isinstance(X, int) or is_Integer(X): + from sage.rings.integer import Integer + if isinstance(X, int) or isinstance(X, Integer): # The coercion model will try to call Set_object(0) raise ValueError('underlying object cannot be an integer') diff --git a/src/sage/symbolic/ring.pyx b/src/sage/symbolic/ring.pyx index e7a28be127a..501b0920898 100644 --- a/src/sage/symbolic/ring.pyx +++ b/src/sage/symbolic/ring.pyx @@ -207,7 +207,7 @@ cdef class SymbolicRing(sage.rings.abc.SymbolicRing): return False else: - from sage.rings.fraction_field import is_FractionField + from sage.rings.fraction_field import FractionField_generic from sage.rings.polynomial.polynomial_ring import is_PolynomialRing from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing from sage.rings.polynomial.laurent_polynomial_ring_base import LaurentPolynomialRing_generic @@ -220,7 +220,7 @@ cdef class SymbolicRing(sage.rings.abc.SymbolicRing): if R._is_numerical(): # Almost anything with a coercion into any precision of CC return R not in (RLF, CLF) - elif is_PolynomialRing(R) or is_MPolynomialRing(R) or is_FractionField(R) or isinstance(R, LaurentPolynomialRing_generic): + elif is_PolynomialRing(R) or is_MPolynomialRing(R) or isinstance(R, FractionField_generic) or isinstance(R, LaurentPolynomialRing_generic): base = R.base_ring() return base is not self and self.has_coerce_map_from(base) elif (R is InfinityRing or R is UnsignedInfinityRing