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_Ideal, is_LaurentSeries, is_MPolynomialIdeal, is_MPolynomialRing, is_MPowerSeries, is_PolynomialQuotientRing, is_PolynomialRing, is_PolynomialSequence, is_PowerSeries, is_QuotientRing #38266

Merged
merged 22 commits into from
Aug 3, 2024
Merged
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
34a5f92
Fixing issue 38012
Jun 4, 2024
9d5a23a
Added comment saying purpose of change and reformated polynomial
Jun 4, 2024
7f64cf8
Update src/sage/dynamics/arithmetic_dynamics/projective_ds.py
Nathabolin Jun 6, 2024
8c97c99
Update src/sage/dynamics/arithmetic_dynamics/projective_ds.py
Nathabolin Jun 6, 2024
8a233f4
Merge branch 'develop' into 38012
Nathabolin Jun 7, 2024
ae8699d
for a in "CLASS='Ideal|PolynomialSequence|PolynomialQuotientRing';SUF…
mkoeppe Jun 23, 2024
acf326c
for a in "CLASS='PolynomialRing';SUFFIX=_general" ; do eval "$a"; git…
mkoeppe Jun 23, 2024
52442e8
Fixups
mkoeppe Jun 23, 2024
d99754c
src/sage/rings/polynomial/polynomial_element.pyx: Fix up
mkoeppe Jun 23, 2024
e3b443d
src/sage/rings/qqbar_decorators.py: Fix up
mkoeppe Jun 23, 2024
62428c6
Deprecations
mkoeppe Jun 23, 2024
203c4da
src/sage/rings/asymptotic/misc.py: Fixup
mkoeppe Jun 23, 2024
68921bc
Deprecations
mkoeppe Jun 23, 2024
9acf49e
src/sage/rings/laurent_series_ring.py: Fix up
mkoeppe Jun 23, 2024
1dd13ce
Fixups
mkoeppe Jun 23, 2024
6085d64
Fixups
mkoeppe Jun 23, 2024
632fca4
src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py: Fix up
mkoeppe Jun 23, 2024
d822ab1
src/sage/modular/modform_hecketriangle/abstract_space.py: Fix up
mkoeppe Jun 24, 2024
6ad33ef
Merge branch 'develop' into 38012
Nathabolin Jul 2, 2024
628e984
Merge remote-tracking branch 'upstream/develop' into is_QuotientRing_…
mkoeppe Jul 22, 2024
a8d9b03
Merge branch '38012' into is_QuotientRing_deprecation
mkoeppe Jul 22, 2024
6a16461
src/sage/dynamics/arithmetic_dynamics/projective_ds.py: Replace a use…
mkoeppe Jul 22, 2024
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
Prev Previous commit
Next Next commit
for a in "CLASS='PolynomialRing';SUFFIX=_general" ; do eval "$a"; git…
… --no-pager grep -l -E 'is_('$CLASS')' src/sage | xargs sed -E -i.bak 's/import is_('$CLASS')/import \1'$SUFFIX'/;/^ +/s/is_('$CLASS')[(]([^()]*([(][^()]*[)])?[^()]*)[)]/isinstance(\2, \1'$SUFFIX')/g'; done
Matthias Koeppe committed Jun 23, 2024
commit acf326c639f94793758090c83c85d13a68f3383c
4 changes: 2 additions & 2 deletions src/sage/crypto/lattice.py
Original file line number Diff line number Diff line change
@@ -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):
@@ -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

16 changes: 8 additions & 8 deletions src/sage/dynamics/arithmetic_dynamics/projective_ds.py
Original file line number Diff line number Diff line change
@@ -96,7 +96,7 @@ class initialization directly.
from sage.rings.morphism import RingHomomorphism_im_gens
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
@@ -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 isinstance(x, MPolynomialRing_base)
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]
@@ -394,7 +394,7 @@ 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)
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))
@@ -3533,7 +3533,7 @@ def affine_preperiodic_model(self, m, n, return_conjugation=False):
if hyperplane_found:
break
else:
if is_PolynomialRing(R) or isinstance(R, MPolynomialRing_base) 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()
@@ -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 isinstance(R, MPolynomialRing_base)):
if (isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base)):
phi = FlatteningMorphism(CR)
flatCR = phi.codomain()
Ik = flatCR.ideal(1)
@@ -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 isinstance(R, MPolynomialRing_base)):
if (isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base)):
phi = FlatteningMorphism(CR)
flatCR = phi.codomain()
Ik = flatCR.ideal(1)
@@ -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 isinstance(base_ring.ring(), MPolynomialRing_base) 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)
@@ -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 isinstance(base_ring, MPolynomialRing_base)):
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()
4 changes: 2 additions & 2 deletions src/sage/ext/fast_callable.pyx
Original file line number Diff line number Diff line change
@@ -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.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring import MPolynomialRing_base
if is_PolynomialRing(x.parent()) or isinstance(x.parent(), MPolynomialRing_base):
if isinstance(x.parent(), PolynomialRing_general) or isinstance(x.parent(), MPolynomialRing_base):
vars = x.parent().variable_names()
else:
# constant
4 changes: 2 additions & 2 deletions src/sage/interfaces/singular.py
Original file line number Diff line number Diff line change
@@ -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
@@ -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)

2 changes: 1 addition & 1 deletion src/sage/matrix/matrix_space.py
Original file line number Diff line number Diff line change
@@ -298,7 +298,7 @@ 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 polynomial_ring.isinstance(R, PolynomialRing_general) and R.base_ring() in _Fields:
try:
from . import matrix_polynomial_dense
except ImportError:
8 changes: 4 additions & 4 deletions src/sage/modular/modform_hecketriangle/abstract_space.py
Original file line number Diff line number Diff line change
@@ -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
from sage.rings.rational_field import QQ
from sage.structure.element import parent
@@ -1721,7 +1721,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:
@@ -2015,7 +2015,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:
@@ -2282,7 +2282,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:
4 changes: 2 additions & 2 deletions src/sage/modular/modform_hecketriangle/functors.py
Original file line number Diff line number Diff line change
@@ -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]
4 changes: 2 additions & 2 deletions src/sage/rings/asymptotic/asymptotic_ring.py
Original file line number Diff line number Diff line change
@@ -4078,7 +4078,7 @@ 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.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
from sage.rings.power_series_ring import PowerSeriesRing

@@ -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,
Original file line number Diff line number Diff line change
@@ -510,10 +510,10 @@ def dimension(self):
sage: F.dimension()
2
"""
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
R = self.denominator_ring
if is_PolynomialRing(R) or isinstance(R, MPolynomialRing_base):
if isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base):
return R.ngens()
raise NotImplementedError('only polynomial rings are supported as base')

@@ -3222,9 +3222,9 @@ def _element_constructor_(self, *args, **kwargs):
p = numerator
q = R(denominator)

from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
if is_PolynomialRing(R) or isinstance(R, MPolynomialRing_base):
if isinstance(R, PolynomialRing_general) or isinstance(R, MPolynomialRing_base):
if not R(q).is_unit():
# Factor denominator
try:
@@ -3292,9 +3292,9 @@ def _coerce_map_from_(self, 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.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.multi_polynomial_ring_base import MPolynomialRing_base
if is_PolynomialRing(B) or isinstance(B, MPolynomialRing_base):
if isinstance(B, PolynomialRing_general) or isinstance(B, MPolynomialRing_base):
if self.base().has_coerce_map_from(B):
return True

4 changes: 2 additions & 2 deletions src/sage/rings/asymptotic/growth_group.py
Original file line number Diff line number Diff line change
@@ -1805,9 +1805,9 @@ def _initial_category_(base):
# The following block can be removed once #19269 is fixed.
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
if base is ZZ or base is QQ or \
is_PolynomialRing(base) and \
isinstance(base, PolynomialRing_general) and \
(base.base_ring() is ZZ or base.base_ring() is QQ):
return Posets()
else:
4 changes: 2 additions & 2 deletions src/sage/rings/asymptotic/misc.py
Original file line number Diff line number Diff line change
@@ -149,7 +149,7 @@ def parent_to_repr_short(P):
from sage.rings.real_mpfi import RIF
from sage.rings.real_mpfr import RR
from sage.symbolic.ring import SR
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
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 PowerSeriesRing

@@ -168,7 +168,7 @@ def abbreviate(P):
pass
raise ValueError('Cannot abbreviate %s.' % (P,))

poly = is_PolynomialRing(P) or isinstance(P, MPolynomialRing_base)
poly = isinstance(P, PolynomialRing_general) or isinstance(P, MPolynomialRing_base)
from sage.rings import multi_power_series_ring
power = is_PowerSeriesRing(P) or \
multi_power_series_ring.is_MPowerSeriesRing(P)
10 changes: 5 additions & 5 deletions src/sage/rings/finite_rings/residue_field.pyx
Original file line number Diff line number Diff line change
@@ -189,7 +189,7 @@ from sage.rings.number_field.number_field_ideal import NumberFieldIdeal
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
from sage.rings.polynomial.polynomial_ring import PolynomialRing_general
from sage.rings.polynomial.polynomial_element import Polynomial

from sage.structure.element cimport Element, parent, Vector
@@ -339,7 +339,7 @@ class ResidueFieldFactory(UniqueFactory):
raise ValueError("p must be an ideal or element of a number field or function field.")
if not p.is_prime():
raise ValueError("p (%s) must be prime" % p)
if is_PolynomialRing(p.ring()):
if isinstance(p.ring(), PolynomialRing_general):
if not p.ring().base_ring().is_finite():
raise ValueError("residue fields only supported for polynomial rings over finite fields")
if not p.ring().base_ring().is_prime_field():
@@ -375,7 +375,7 @@ class ResidueFieldFactory(UniqueFactory):

if pring is ZZ:
return ResidueFiniteField_prime_modn(p, names, p.gen(), None, None, None)
if is_PolynomialRing(pring):
if isinstance(pring, PolynomialRing_general):
K = pring.fraction_field()
Kbase = pring.base_ring()
f = p.gen()
@@ -1403,7 +1403,7 @@ cdef class ResidueFieldHomomorphism_global(RingHomomorphism):
# No special code for residue fields of Z, since we just use the normal reduction map to GF(p)
if self._K is ZZ:
return self._F(x)
if is_PolynomialRing(self._K):
if isinstance(self._K, PolynomialRing_general):
p = self._F.p.gen()
if p.degree() == 1:
return self._F((x % p)[0])
@@ -1661,7 +1661,7 @@ cdef class LiftingMap(Section):
return self._K(self._K.ring_of_integers()(x))
else:
return self._K(self._K.ring_of_integers()(x.polynomial().list()))
elif is_PolynomialRing(self._K):
elif isinstance(self._K, PolynomialRing_general):
return self._K(x.polynomial().list())
# Else the lifting map is just x |--> to_order(x * PB)
x = self._F(x)
4 changes: 2 additions & 2 deletions src/sage/rings/laurent_series_ring.py
Original file line number Diff line number Diff line change
@@ -678,13 +678,13 @@ def _coerce_map_from_(self, P):
from sage.rings.polynomial.laurent_polynomial_ring_base import (
LaurentPolynomialRing_generic,
)
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

if ((is_LaurentSeriesRing(P) or
isinstance(P, LaurentPolynomialRing_generic) or
is_PowerSeriesRing(P) or
is_PolynomialRing(P))
isinstance(P, PolynomialRing_general))
and P.variable_name() == self.variable_name()
and A.has_coerce_map_from(P.base_ring())):
return True
Loading