Skip to content

Commit

Permalink
Merge branch 'is_QuotientRing_deprecation' into is_PowerSeriesRing_de…
Browse files Browse the repository at this point in the history
…precation
  • Loading branch information
Matthias Koeppe committed Jun 27, 2024
2 parents 75ae9e2 + d822ab1 commit 8e671a8
Show file tree
Hide file tree
Showing 64 changed files with 316 additions and 248 deletions.
4 changes: 2 additions & 2 deletions src/sage/categories/category_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -616,8 +616,8 @@ def __contains__(self, x):
"""
if super().__contains__(x):
return True
from sage.rings.ideal import is_Ideal
return is_Ideal(x) and x.ring() == self.ring()
from sage.rings.ideal import Ideal_generic
return isinstance(x, Ideal_generic) and x.ring() == self.ring()

def __call__(self, v):
"""
Expand Down
4 changes: 2 additions & 2 deletions src/sage/combinat/finite_state_machine.py
Original file line number Diff line number Diff line change
Expand Up @@ -10790,8 +10790,8 @@ def entry(transition):
else:
base_ring = transition_matrix.parent().base_ring()
from sage.rings.polynomial.multi_polynomial_ring \
import is_MPolynomialRing
if is_MPolynomialRing(base_ring):
import MPolynomialRing_base
if isinstance(base_ring, MPolynomialRing_base):
# if base_ring is already a multivariate polynomial
# ring, extend it instead of creating a univariate
# polynomial ring over a polynomial ring. This
Expand Down
4 changes: 2 additions & 2 deletions src/sage/crypto/lattice.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# http://www.gnu.org/licenses/
#*****************************************************************************

from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general

def gen_lattice(type='modular', n=4, m=8, q=11, seed=None,
quotient=None, dual=False, ntl=False, lattice=False):
Expand Down Expand Up @@ -254,7 +254,7 @@ def gen_lattice(type='modular', n=4, m=8, q=11, seed=None,

P = quotient.parent()
# P should be a univariate polynomial ring over ZZ_q
if not is_PolynomialRing(P):
if not isinstance(P, PolynomialRing_general):
raise TypeError("quotient should be a univariate polynomial")
assert P.base_ring() is ZZ_q

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 @@ -46,7 +46,7 @@ class initialization directly.
from sage.rings.finite_rings.finite_field_base import FiniteField
from sage.rings.fraction_field import FractionField
from sage.rings.fraction_field import FractionField_generic
from sage.rings.quotient_ring import is_QuotientRing
from sage.rings.quotient_ring import QuotientRing_nc
from sage.schemes.affine.affine_morphism import SchemeMorphism_polynomial_affine_space
from sage.schemes.affine.affine_morphism import SchemeMorphism_polynomial_affine_space_field
from sage.schemes.affine.affine_morphism import SchemeMorphism_polynomial_affine_space_finite_field
Expand Down Expand Up @@ -268,7 +268,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None):
PR = PR.ring().change_ring(K).fraction_field()
polys = [PR(poly) for poly in polys]
else:
quotient_ring = any(is_QuotientRing(poly.parent()) for poly in polys)
quotient_ring = any(isinstance(poly.parent(), QuotientRing_nc) for poly in polys)
# If any of the list entries lies in a quotient ring, we try
# to lift all entries to a common polynomial ring.
if quotient_ring:
Expand Down
22 changes: 11 additions & 11 deletions src/sage/dynamics/arithmetic_dynamics/projective_ds.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,9 @@ class initialization directly.
from sage.rings.integer_ring import ZZ
from sage.rings.polynomial.flatten import FlatteningMorphism, UnflatteningMorphism
from sage.rings.morphism import RingHomomorphism_im_gens
from sage.rings.polynomial.multi_polynomial_ring_base import is_MPolynomialRing
from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.quotient_ring import QuotientRing_generic
from sage.rings.rational_field import QQ
from sage.rings.real_mpfr import RealField
Expand Down Expand Up @@ -384,7 +384,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None, names=None):
polys = list(morphism_or_polys)
if len(polys) == 1:
raise ValueError("list/tuple must have at least 2 polynomials")
test = lambda x: is_PolynomialRing(x) or is_MPolynomialRing(x)
test = lambda x: isinstance(x, PolynomialRing_general) or isinstance(x, MPolynomialRing_base)
if not all(test(poly.parent()) for poly in polys):
try:
polys = [poly.lift() for poly in polys]
Expand All @@ -394,8 +394,8 @@ 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 isinstance(aff_CR, FractionField_generic)
and not (is_MPolynomialRing(aff_CR) and aff_CR.ngens() == 1)):
if (not isinstance(aff_CR, PolynomialRing_general) and not isinstance(aff_CR, FractionField_generic)
and not (isinstance(aff_CR, MPolynomialRing_base) and aff_CR.ngens() == 1)):
msg = '{} is not a single variable polynomial or rational function'
raise ValueError(msg.format(f))
if isinstance(aff_CR, FractionField_generic):
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 isinstance(R, FractionField_generic):
if isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base) 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 @@ -4598,7 +4598,7 @@ def preperiodic_points(self, m, n, **kwds):
for k in ZZ(n).divisors():
if ZZ(n/k).is_prime():
Sn.append(k)
if (is_PolynomialRing(R) or is_MPolynomialRing(R)):
if (isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base)):
phi = FlatteningMorphism(CR)
flatCR = phi.codomain()
Ik = flatCR.ideal(1)
Expand Down Expand Up @@ -4881,7 +4881,7 @@ def periodic_points(self, n, minimal=True, formal=False, R=None, algorithm='vari
raise NotImplementedError('periodic points not implemented for fraction function fields; '
'clear denominators and use the polynomial ring instead')
if isinstance(R, FractionField_generic):
if is_MPolynomialRing(R.ring()):
if isinstance(R.ring(), MPolynomialRing_base):
raise NotImplementedError('periodic points not implemented for fraction function fields; '
'clear denominators and use the polynomial ring instead')
CR = f_sub.coordinate_ring()
Expand Down Expand Up @@ -4954,7 +4954,7 @@ def periodic_points(self, n, minimal=True, formal=False, R=None, algorithm='vari
for k in ZZ(n).divisors():
if ZZ(n/k).is_prime():
Sn.append(k)
if (is_PolynomialRing(R) or is_MPolynomialRing(R)):
if (isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base)):
phi = FlatteningMorphism(CR)
flatCR = phi.codomain()
Ik = flatCR.ideal(1)
Expand Down Expand Up @@ -5785,7 +5785,7 @@ def sigma_invariants(self, n, formal=False, embedding=None, type='point',
else:
F = base_ring
if isinstance(base_ring, FractionField_generic):
if is_MPolynomialRing(base_ring.ring()) or is_PolynomialRing(base_ring.ring()):
if isinstance(base_ring.ring(), MPolynomialRing_base) or isinstance(base_ring.ring(), PolynomialRing_general):
f.normalize_coordinates()
f_ring = f.change_ring(base_ring.ring())
X = f_ring.periodic_points(n, minimal=False, formal=formal, return_scheme=True)
Expand Down Expand Up @@ -5888,7 +5888,7 @@ def sigma_invariants(self, n, formal=False, embedding=None, type='point',
base_ring = dom.base_ring()
if isinstance(base_ring, FractionField_generic):
base_ring = base_ring.ring()
if (is_PolynomialRing(base_ring) or is_MPolynomialRing(base_ring)):
if (isinstance(base_ring, PolynomialRing_general) or isinstance(base_ring, MPolynomialRing_base)):
base_ring = base_ring.base_ring()
elif base_ring in FunctionFields():
base_ring = base_ring.constant_base_field()
Expand Down
6 changes: 3 additions & 3 deletions src/sage/ext/fast_callable.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -475,9 +475,9 @@ def fast_callable(x, domain=None, vars=None,
x = x.function(*vars)

if vars is None:
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing
if is_PolynomialRing(x.parent()) or is_MPolynomialRing(x.parent()):
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring import MPolynomialRing_base
if isinstance(x.parent(), PolynomialRing_general) or isinstance(x.parent(), MPolynomialRing_base):
vars = x.parent().variable_names()
else:
# constant
Expand Down
4 changes: 2 additions & 2 deletions src/sage/interfaces/singular.py
Original file line number Diff line number Diff line change
Expand Up @@ -1797,7 +1797,7 @@ def sage_poly(self, R=None, kcache=None):
# TODO: Refactor imports to move this to the top
from sage.rings.polynomial.multi_polynomial_ring import MPolynomialRing_polydict
from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomialRing_libsingular
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.polydict import ETuple
from sage.rings.polynomial.polynomial_singular_interface import can_convert_to_singular
from sage.rings.quotient_ring import QuotientRing_generic
Expand Down Expand Up @@ -1888,7 +1888,7 @@ def sage_poly(self, R=None, kcache=None):

return R(sage_repr)

elif is_PolynomialRing(R) and (ring_is_fine or can_convert_to_singular(R)):
elif isinstance(R, PolynomialRing_general) and (ring_is_fine or can_convert_to_singular(R)):

sage_repr = [0] * int(self.deg() + 1)

Expand Down
4 changes: 2 additions & 2 deletions src/sage/matrix/matrix_space.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,15 +298,15 @@ def get_matrix_class(R, nrows, ncols, sparse, implementation):
except ImportError:
pass
else:
if polynomial_ring.is_PolynomialRing(R) and R.base_ring() in _Fields:
if isinstance(R, polynomial_ring.PolynomialRing_general) and R.base_ring() in _Fields:
try:
from . import matrix_polynomial_dense
except ImportError:
pass
else:
return matrix_polynomial_dense.Matrix_polynomial_dense

elif multi_polynomial_ring_base.is_MPolynomialRing(R) and R.base_ring() in _Fields:
elif isinstance(R, multi_polynomial_ring_base.MPolynomialRing_base) and R.base_ring() in _Fields:
try:
from . import matrix_mpolynomial_dense
except ImportError:
Expand Down
6 changes: 3 additions & 3 deletions src/sage/modular/modform/hecke_operator_on_qexp.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from sage.rings.infinity import Infinity
from sage.rings.integer import Integer
from sage.rings.integer_ring import ZZ
from sage.rings.power_series_ring_element import is_PowerSeries
from sage.rings.power_series_ring_element import PowerSeries

lazy_import('sage.rings.number_field.number_field', 'CyclotomicField')

Expand Down Expand Up @@ -87,7 +87,7 @@ def hecke_operator_on_qexp(f, n, k, eps=None,
# ZZ can coerce to GF(p), but QQ can't.
eps = DirichletGroup(1, base_ring=ZZ)[0]
if check:
if not (is_PowerSeries(f) or isinstance(f, ModularFormElement)):
if not (isinstance(f, PowerSeries) or isinstance(f, ModularFormElement)):
raise TypeError("f (=%s) must be a power series or modular form" % f)
if not isinstance(eps, DirichletCharacter):
raise TypeError("eps (=%s) must be a Dirichlet character" % eps)
Expand Down Expand Up @@ -235,7 +235,7 @@ def hecke_operator_on_basis(B, n, k, eps=None, already_echelonized=False):
eps = DirichletGroup(1, R)[0]
all_powerseries = True
for x in B:
if not is_PowerSeries(x):
if not isinstance(x, PowerSeries):
all_powerseries = False
if not all_powerseries:
raise TypeError("each element of B must be a power series")
Expand Down
6 changes: 3 additions & 3 deletions src/sage/modular/modform/space.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,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.power_series_ring_element import is_PowerSeries
from sage.rings.power_series_ring_element import PowerSeries
from sage.rings.rational_field import QQ
from sage.categories.rings import Rings

Expand Down Expand Up @@ -1121,7 +1121,7 @@ def _element_constructor_(self, x, check=True):

return self(x.q_expansion(self._q_expansion_module().degree()))

elif is_PowerSeries(x):
elif isinstance(x, PowerSeries):
if x.prec() == PlusInfinity():
if x == 0:
return self.element_class(self, self.free_module().zero())
Expand Down Expand Up @@ -1914,7 +1914,7 @@ def find_in_space(self, f, forms=None, prec=None, indep=True):
B = V.span_of_basis(w)
else:
B = V.span(w)
if is_PowerSeries(f) and f.prec() < n:
if isinstance(f, PowerSeries) and f.prec() < n:
raise ValueError("you need at least %s terms of precision" % n)
x = V(f.padded_list(n))
return B.coordinates(x)
Expand Down
8 changes: 4 additions & 4 deletions src/sage/modular/modform_hecketriangle/abstract_space.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
from sage.rings.integer import Integer
from sage.rings.integer_ring import ZZ
from sage.rings.laurent_series_ring import LaurentSeriesRing
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.power_series_ring import PowerSeriesRing_generic
from sage.rings.rational_field import QQ
from sage.structure.element import parent
Expand Down Expand Up @@ -1723,7 +1723,7 @@ def construct_form(self, laurent_series, order_1=ZZ(0), check=True, rationalize=
"""

base_ring = laurent_series.base_ring()
if is_PolynomialRing(base_ring.base()):
if isinstance(base_ring.base(), PolynomialRing_general):
if not (self.coeff_ring().has_coerce_map_from(base_ring)):
raise ValueError("The Laurent coefficients don't coerce into the coefficient ring of self!")
elif rationalize:
Expand Down Expand Up @@ -2017,7 +2017,7 @@ def construct_quasi_form(self, laurent_series, order_1=ZZ(0), check=True, ration
"""

base_ring = laurent_series.base_ring()
if is_PolynomialRing(base_ring.base()):
if isinstance(base_ring.base(), PolynomialRing_general):
if not (self.coeff_ring().has_coerce_map_from(base_ring)):
raise ValueError("The Laurent coefficients don't coerce into the coefficient ring of self!")
elif rationalize:
Expand Down Expand Up @@ -2284,7 +2284,7 @@ def rationalize_series(self, laurent_series, coeff_bound=1e-10, denom_factor=ZZ(

# If the coefficients already coerce to our coefficient ring
# and are in polynomial form we simply return the Laurent series
if (is_PolynomialRing(base_ring.base())):
if (isinstance(base_ring.base(), PolynomialRing_general)):
if (self.coeff_ring().has_coerce_map_from(base_ring)):
return laurent_series
else:
Expand Down
4 changes: 2 additions & 2 deletions src/sage/modular/modform_hecketriangle/functors.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,15 @@ def _get_base_ring(ring, var_name="d"):
"""

# from sage.rings.fraction_field import FractionField_generic
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.categories.pushout import FractionField as FractionFieldFunctor

base_ring = 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]
if (is_PolynomialRing(base_ring) and base_ring.ngens() == 1 and base_ring.variable_name() == var_name):
if (isinstance(base_ring, PolynomialRing_general) and base_ring.ngens() == 1 and base_ring.variable_name() == var_name):
base_ring = base_ring.base()
if (base_ring.construction() and base_ring.construction()[0] == FractionFieldFunctor()):
base_ring = base_ring.construction()[1]
Expand Down
8 changes: 4 additions & 4 deletions src/sage/rings/asymptotic/asymptotic_ring.py
Original file line number Diff line number Diff line change
Expand Up @@ -4078,8 +4078,8 @@ def _element_constructor_(self, data, simplify=True, convert=True):

from .misc import combine_exceptions
from sage.symbolic.ring import SymbolicRing
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.multi_polynomial_ring_base import is_MPolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
from sage.rings.power_series_ring import is_PowerSeriesRing

if isinstance(P, SymbolicRing):
Expand All @@ -4097,7 +4097,7 @@ def _element_constructor_(self, data, simplify=True, convert=True):
(data, self)), e)
return sum(summands, self.zero())

elif is_PolynomialRing(P):
elif isinstance(P, PolynomialRing_general):
p = P.gen()
try:
return sum(iter(self.create_summand('exact', growth=p**i,
Expand All @@ -4108,7 +4108,7 @@ def _element_constructor_(self, data, simplify=True, convert=True):
raise combine_exceptions(
ValueError('Polynomial %s is not in %s' % (data, self)), e)

elif is_MPolynomialRing(P):
elif isinstance(P, MPolynomialRing_base):
try:
return sum(iter(self.create_summand('exact', growth=g, coefficient=c)
for c, g in iter(data)),
Expand Down
Loading

0 comments on commit 8e671a8

Please sign in to comment.