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_SchemeMorphism, is_SchemeTopologicalPoint #38296

Merged
merged 8 commits into from
Aug 10, 2024
Merged
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 is_SchemeTopologicalPoint(x):
from sage.misc.superseded import deprecation
deprecation(38296,

Check warning on line 77 in src/sage/schemes/generic/point.py

View check run for this annotation

Codecov / codecov/patch

src/sage/schemes/generic/point.py#L76-L77

Added lines #L76 - L77 were not covered by tests
"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 @@
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):

Check warning on line 143 in src/sage/schemes/hyperelliptic_curves/jacobian_homset.py

View check run for this annotation

Codecov / codecov/patch

src/sage/schemes/hyperelliptic_curves/jacobian_homset.py#L143

Added line #L143 was not covered by tests
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
Loading