Skip to content

Commit

Permalink
sagemathgh-38296: Deprecate is_SchemeMorphism, `is_SchemeTopologica…
Browse files Browse the repository at this point in the history
…lPoint`

    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Part of:
- sagemath#32414

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#38296
Reported by: Matthias Köppe
Reviewer(s): Kwankyu Lee
  • Loading branch information
Release Manager committed Aug 4, 2024
2 parents f6b068c + de805b1 commit f0f8a09
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 53 deletions.
12 changes: 6 additions & 6 deletions src/sage/categories/schemes.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
from sage.categories.fields import Fields
from sage.categories.homsets import HomsetsCategory
from sage.misc.abstract_method import abstract_method
from sage.misc.lazy_import import lazy_import

lazy_import('sage.categories.map', 'Map')
lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')
lazy_import('sage.schemes.generic.scheme', 'Scheme')


class Schemes(Category):
Expand Down Expand Up @@ -139,15 +144,10 @@ def _call_(self, x):
From: Integer Ring
To: Rational Field
"""
from sage.schemes.generic.scheme import Scheme
if isinstance(x, Scheme):
return x
from sage.schemes.generic.morphism import is_SchemeMorphism
if is_SchemeMorphism(x):
if isinstance(x, (SchemeMorphism, Scheme)):
return x
from sage.categories.commutative_rings import CommutativeRings
from sage.schemes.generic.spec import Spec
from sage.categories.map import Map
if x in CommutativeRings():
return Spec(x)
elif isinstance(x, Map) and x.category_for().is_subcategory(Rings()):
Expand Down
5 changes: 3 additions & 2 deletions src/sage/schemes/affine/affine_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@
# ****************************************************************************

from sage.categories.number_fields import NumberFields
from sage.misc.lazy_import import lazy_import
from sage.rings.integer_ring import ZZ
from sage.schemes.generic.morphism import SchemeMorphism_point, SchemeMorphism, is_SchemeMorphism
from sage.schemes.generic.morphism import SchemeMorphism_point, SchemeMorphism
from sage.structure.sequence import Sequence

_NumberFields = NumberFields()
Expand Down Expand Up @@ -69,7 +70,7 @@ def __init__(self, X, v, check=True):
SchemeMorphism.__init__(self, X)
if check:
from sage.categories.commutative_rings import CommutativeRings
if is_SchemeMorphism(v):
if isinstance(v, SchemeMorphism):
v = list(v)
else:
try:
Expand Down
7 changes: 4 additions & 3 deletions src/sage/schemes/elliptic_curves/ell_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@
from sage.rings.real_mpfr import RealField, RR
from sage.schemes.curves.projective_curve import Hasse_bounds
from sage.schemes.elliptic_curves.constructor import EllipticCurve
from sage.schemes.generic.morphism import is_SchemeMorphism
from sage.schemes.projective.projective_point import (SchemeMorphism_point_projective_ring,
SchemeMorphism_point_abelian_variety_field)
from sage.structure.coerce_actions import IntegerMulAction
Expand All @@ -139,6 +138,7 @@
from sage.structure.sequence import Sequence

lazy_import('sage.rings.padics.factory', 'Qp')
lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')

try:
from sage.libs.pari.all import pari, PariError
Expand Down Expand Up @@ -175,7 +175,8 @@ def curve(self):
sage: K.<a> = NumberField(x^2 - 3,'a') # needs sage.rings.number_field
sage: P = E.base_extend(K)(1, a) # needs sage.rings.number_field
sage: P.scheme() # needs sage.rings.number_field
Elliptic Curve defined by y^2 = x^3 + x + 1 over Number Field in a with defining polynomial x^2 - 3
Elliptic Curve defined by y^2 = x^3 + x + 1 over
Number Field in a with defining polynomial x^2 - 3
"""
return self.scheme()

Expand Down Expand Up @@ -290,7 +291,7 @@ def __init__(self, curve, v, check=True):
"""
point_homset = curve.point_homset()
R = point_homset.value_ring()
if is_SchemeMorphism(v) or isinstance(v, EllipticCurvePoint_field):
if isinstance(v, SchemeMorphism):
v = list(v)
elif v == 0:
v = (R.zero(), R.one(), R.zero())
Expand Down
9 changes: 5 additions & 4 deletions src/sage/schemes/generic/divisor.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@
#*******************************************************************************

from sage.misc.latex import latex
from sage.misc.lazy_import import lazy_import
from sage.misc.repr import repr_lincomb
from sage.misc.search import search
from sage.rings.integer_ring import ZZ
from sage.structure.formal_sum import FormalSum

from .morphism import is_SchemeMorphism
from sage.schemes.affine.affine_space import AffineSpace_generic
from sage.schemes.projective.projective_space import ProjectiveSpace_ring
from sage.structure.formal_sum import FormalSum

lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')


def CurvePointToIdeal(C,P):
Expand Down Expand Up @@ -356,7 +357,7 @@ def __init__(self, v, parent=None, check=True, reduce=True):
else:
n = ZZ(1)
I = t
if is_SchemeMorphism(I):
if isinstance(I, SchemeMorphism):
I = CurvePointToIdeal(C,I)
else:
know_points = False
Expand Down
13 changes: 8 additions & 5 deletions src/sage/schemes/generic/glue.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@
# http://www.gnu.org/licenses/
#*******************************************************************************

from . import morphism
from . import scheme
from sage.misc.lazy_import import lazy_import
from sage.schemes.generic.scheme import Scheme

class GluedScheme(scheme.Scheme):
lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')


class GluedScheme(Scheme):
r"""
INPUT:
Expand Down Expand Up @@ -44,9 +47,9 @@ class GluedScheme(scheme.Scheme):
"""
def __init__(self, f, g, check=True):
if check:
if not morphism.is_SchemeMorphism(f):
if not isinstance(f, SchemeMorphism):
raise TypeError("f (=%s) must be a scheme morphism" % f)
if not morphism.is_SchemeMorphism(g):
if not isinstance(g, SchemeMorphism):
raise TypeError("g (=%s) must be a scheme morphism" % g)
if f.domain() != g.domain():
raise ValueError("f (=%s) and g (=%s) must have the same domain" % (f,g))
Expand Down
28 changes: 16 additions & 12 deletions src/sage/schemes/generic/morphism.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,20 @@
# https://www.gnu.org/licenses/
# ****************************************************************************


import operator
from sage.structure.element import Element, parent, coercion_model

from sage.arith.power import generic_power
from sage.structure.richcmp import richcmp
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 FractionField_generic
from sage.categories.map import FormalCompositeMap, Map
from sage.categories.morphism import SetMorphism
from sage.misc.constant_function import ConstantFunction
from sage.misc.lazy_attribute import lazy_attribute
from sage.categories.morphism import SetMorphism
from sage.rings.fraction_field import FractionField_generic
from sage.rings.fraction_field_element import FractionFieldElement
from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme
from sage.structure.element import Element, parent, coercion_model
from sage.structure.richcmp import richcmp
from sage.structure.sequence import Sequence


def is_SchemeMorphism(f):
Expand All @@ -111,13 +111,17 @@ def is_SchemeMorphism(f):
Defn: Defined on coordinates by sending (x, y) to (y, x^2 + y)
sage: from sage.schemes.generic.morphism import is_SchemeMorphism
sage: is_SchemeMorphism(f)
doctest:warning...
DeprecationWarning: The function is_SchemeMorphism is deprecated;
use 'isinstance(..., SchemeMorphism)' instead.
See https://github.com/sagemath/sage/issues/38296 for details.
True
"""
try:
from sage.schemes.elliptic_curves.ell_point import EllipticCurvePoint_field
except ImportError:
EllipticCurvePoint_field = ()
return isinstance(f, (SchemeMorphism, EllipticCurvePoint_field))
from sage.misc.superseded import deprecation
deprecation(38296,
"The function is_SchemeMorphism is deprecated; "
"use 'isinstance(..., SchemeMorphism)' instead.")
return isinstance(f, SchemeMorphism)


class SchemeMorphism(Element):
Expand Down
4 changes: 4 additions & 0 deletions src/sage/schemes/generic/point.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ def _repr_(self):
########################################################

def is_SchemeTopologicalPoint(x):
from sage.misc.superseded import deprecation
deprecation(38296,
"The function is_SchemeTopologicalPoint is deprecated; "
"use 'isinstance(..., SchemeTopologicalPoint)' instead.")
return isinstance(x, SchemeTopologicalPoint)

class SchemeTopologicalPoint(SchemePoint):
Expand Down
12 changes: 6 additions & 6 deletions src/sage/schemes/generic/scheme.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,16 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from sage.structure.parent import Parent
from sage.categories.commutative_rings import CommutativeRings
from sage.misc.cachefunc import cached_method
from sage.misc.lazy_import import lazy_import
from sage.rings.integer_ring import ZZ
from sage.categories.commutative_rings import CommutativeRings
from sage.rings.ideal import Ideal_generic
from sage.structure.unique_representation import UniqueRepresentation
from sage.rings.integer_ring import ZZ
from sage.schemes.generic.point import SchemeTopologicalPoint_prime_ideal
from sage.structure.parent import Parent
from sage.structure.unique_representation import UniqueRepresentation

lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')
lazy_import('sage.schemes.elliptic_curves.ell_generic', 'EllipticCurve_generic', as_='EllipticCurve')


Expand Down Expand Up @@ -104,15 +105,14 @@ def __init__(self, X=None, category=None):
sage: X = Spec(RmodI)
sage: TestSuite(X).run() # needs sage.libs.singular
"""
from sage.schemes.generic.morphism import is_SchemeMorphism
from sage.categories.map import Map
from sage.categories.rings import Rings

if X is None:
self._base_ring = ZZ
elif isinstance(X, Scheme):
self._base_scheme = X
elif is_SchemeMorphism(X):
elif isinstance(X, SchemeMorphism):
self._base_morphism = X
elif X in CommutativeRings():
self._base_ring = X
Expand Down
15 changes: 8 additions & 7 deletions src/sage/schemes/hyperelliptic_curves/jacobian_homset.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.integer_ring import ZZ
from sage.misc.lazy_import import lazy_import
from sage.rings.integer import Integer
from sage.rings.integer_ring import ZZ
from sage.rings.polynomial.polynomial_element import Polynomial

from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.schemes.generic.homset import SchemeHomset_points
from sage.schemes.generic.morphism import is_SchemeMorphism
from .jacobian_morphism import JacobianMorphism_divisor_class_field
from sage.schemes.hyperelliptic_curves.jacobian_morphism import JacobianMorphism_divisor_class_field

lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism')


class JacobianHomset_divisor_classes(SchemeHomset_points):
Expand Down Expand Up @@ -139,12 +140,12 @@ def __call__(self, P):
return JacobianMorphism_divisor_class_field(self, (P1, P2))
if isinstance(P1, Polynomial) and isinstance(P2, Polynomial):
return JacobianMorphism_divisor_class_field(self, tuple(P))
if is_SchemeMorphism(P1) and is_SchemeMorphism(P2):
if isinstance(P1, SchemeMorphism) and isinstance(P2, SchemeMorphism):
return self(P1) - self(P2)
raise TypeError("argument P (= %s) must have length 2" % P)
elif isinstance(P, JacobianMorphism_divisor_class_field) and self == P.parent():
return P
elif is_SchemeMorphism(P):
elif isinstance(P, SchemeMorphism):
x0 = P[0]
y0 = P[1]
R, x = PolynomialRing(self.value_ring(), 'x').objgen()
Expand Down
6 changes: 2 additions & 4 deletions src/sage/schemes/projective/projective_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,12 @@
from sage.rings.rational_field import QQ
from sage.rings.ring import CommutativeRing
from sage.schemes.generic.morphism import (SchemeMorphism,
is_SchemeMorphism,
SchemeMorphism_point)
from sage.structure.element import AdditiveGroupElement
from sage.structure.richcmp import richcmp, op_EQ, op_NE
from sage.structure.sequence import Sequence

lazy_import('sage.rings.qqbar', 'number_field_elements_from_algebraics')
lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field')

_NumberFields = NumberFields()

Expand Down Expand Up @@ -165,7 +163,7 @@ def __init__(self, X, v, check=True):

if check:
d = X.codomain().ambient_space().ngens()
if is_SchemeMorphism(v) or isinstance(v, EllipticCurvePoint_field):
if isinstance(v, SchemeMorphism):
v = list(v)
else:
try:
Expand Down Expand Up @@ -1131,7 +1129,7 @@ def __init__(self, X, v, check=True):

if check:
d = X.codomain().ambient_space().ngens()
if is_SchemeMorphism(v) or isinstance(v, EllipticCurvePoint_field):
if isinstance(v, SchemeMorphism):
v = list(v)
else:
try:
Expand Down
5 changes: 1 addition & 4 deletions src/sage/schemes/toric/morphism.py
Original file line number Diff line number Diff line change
Expand Up @@ -362,9 +362,7 @@
# the toric varieties level from Morphism. See
# https://groups.google.com/d/msg/sage-devel/qF4yU6Vdmao/wQlNrneSmWAJ
from sage.categories.morphism import Morphism

from sage.structure.richcmp import richcmp_not_equal, richcmp

from sage.structure.sequence import Sequence
from sage.rings.integer_ring import ZZ
from sage.arith.misc import GCD as gcd
Expand All @@ -376,7 +374,6 @@

from sage.schemes.generic.scheme import Scheme
from sage.schemes.generic.morphism import (
is_SchemeMorphism,
SchemeMorphism, SchemeMorphism_point, SchemeMorphism_polynomial
)

Expand Down Expand Up @@ -431,7 +428,7 @@ def __init__(self, X, coordinates, check=True):
if check:
# Verify that there are the right number of coords
# Why is it not done in the parent?
if is_SchemeMorphism(coordinates):
if isinstance(coordinates, SchemeMorphism):
coordinates = list(coordinates)
if not isinstance(coordinates, (list, tuple)):
raise TypeError("coordinates must be a scheme point, list, "
Expand Down

0 comments on commit f0f8a09

Please sign in to comment.