Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate is_AlgebraicNumber, is_AlgebraicReal, is_ComplexDoubleElement, is_ComplexIntervalFieldElement, is_ComplexNumber, is_FractionField, is_FractionFieldElement, is_Integer, is_IntegerMod, is_IntegerRing, is_Rational, is_RationalField, is_RealDoubleElement, is_RealIntervalField, is_RealIntervalFieldElement, is_RealNumber #38128

Merged
merged 16 commits into from
Jun 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/sage/algebras/quatalg/quaternion_algebra.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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()):
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand All @@ -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
Expand Down Expand Up @@ -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')
Expand Down
4 changes: 2 additions & 2 deletions src/sage/combinat/finite_state_machine_generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions src/sage/combinat/sf/jack.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()

Expand Down
4 changes: 2 additions & 2 deletions src/sage/dynamics/arithmetic_dynamics/affine_ds.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
20 changes: 10 additions & 10 deletions src/sage/dynamics/arithmetic_dynamics/projective_ds.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)]
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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')
Expand Down Expand Up @@ -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())
Expand Down Expand Up @@ -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()
Expand Down
6 changes: 3 additions & 3 deletions src/sage/dynamics/complex_dynamics/mandel_julia.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions src/sage/dynamics/complex_dynamics/mandel_julia_helper.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions src/sage/functions/transcendental.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions src/sage/groups/affine_gps/affine_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions src/sage/groups/matrix_gps/matrix_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions src/sage/matrix/matrix0.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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):
Expand Down
14 changes: 7 additions & 7 deletions src/sage/matrix/matrix2.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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)
Expand All @@ -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'
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/sage/matrix/matrix_rational_dense.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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")
Expand Down
Loading
Loading