From 5cd5040b5ef85fbedfb7587bdc09072ad76ea06b Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 27 Jun 2024 16:48:32 -0700 Subject: [PATCH 1/6] Deprecate is_SchemeTopologicalPoint --- src/sage/schemes/generic/point.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sage/schemes/generic/point.py b/src/sage/schemes/generic/point.py index 7ef85645f56..3bf3480c8bf 100644 --- a/src/sage/schemes/generic/point.py +++ b/src/sage/schemes/generic/point.py @@ -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): From 88c4e5d8160d50d54555be95d49536ab26eee9ca Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 27 Jun 2024 17:21:17 -0700 Subject: [PATCH 2/6] Deprecate is_SchemeMorphism --- src/sage/schemes/generic/morphism.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/sage/schemes/generic/morphism.py b/src/sage/schemes/generic/morphism.py index 8034d0b9b5a..3fe58df04de 100644 --- a/src/sage/schemes/generic/morphism.py +++ b/src/sage/schemes/generic/morphism.py @@ -74,20 +74,23 @@ # 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.misc.lazy_import import lazy_import +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 + +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') def is_SchemeMorphism(f): @@ -111,9 +114,16 @@ 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, EllipticCurvePoint_field))' instead. + See https://github.com/sagemath/sage/issues/38296 for details. True """ - from sage.schemes.elliptic_curves.ell_point import EllipticCurvePoint_field + from sage.misc.superseded import deprecation + deprecation(38296, + "The function is_SchemeMorphism is deprecated; " + "use 'isinstance(..., (SchemeMorphism, EllipticCurvePoint_field))' instead.") return isinstance(f, (SchemeMorphism, EllipticCurvePoint_field)) From ff20ad6cb4ccd9b98841182f3cfd34895f2c561c Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 27 Jun 2024 18:06:10 -0700 Subject: [PATCH 3/6] Replace uses of is_SchemeMorphism --- src/sage/categories/schemes.py | 13 +++++++------ src/sage/schemes/affine/affine_point.py | 8 ++++++-- src/sage/schemes/elliptic_curves/ell_point.py | 10 +++++++--- src/sage/schemes/generic/divisor.py | 10 ++++++---- src/sage/schemes/generic/glue.py | 14 +++++++++----- src/sage/schemes/generic/scheme.py | 15 +++++++++------ .../hyperelliptic_curves/jacobian_homset.py | 17 ++++++++++------- src/sage/schemes/projective/projective_point.py | 8 ++++---- src/sage/schemes/toric/morphism.py | 8 ++++---- 9 files changed, 62 insertions(+), 41 deletions(-) diff --git a/src/sage/categories/schemes.py b/src/sage/categories/schemes.py index d0b99f271eb..8ee338244df 100644 --- a/src/sage/categories/schemes.py +++ b/src/sage/categories/schemes.py @@ -24,6 +24,12 @@ 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.elliptic_curves.ell_point', 'EllipticCurvePoint_field') +lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') +lazy_import('sage.schemes.generic.scheme', 'Scheme') class Schemes(Category): @@ -140,15 +146,10 @@ def _call_(self, x): 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, (EllipticCurvePoint_field, 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()): diff --git a/src/sage/schemes/affine/affine_point.py b/src/sage/schemes/affine/affine_point.py index bf6dc2258bc..2e1d4821bc5 100644 --- a/src/sage/schemes/affine/affine_point.py +++ b/src/sage/schemes/affine/affine_point.py @@ -22,10 +22,14 @@ # **************************************************************************** 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 +lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') + _NumberFields = NumberFields() @@ -69,7 +73,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, EllipticCurvePoint_field)): v = list(v) else: try: diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py index 63d50cc0b0d..6262cde5c06 100644 --- a/src/sage/schemes/elliptic_curves/ell_point.py +++ b/src/sage/schemes/elliptic_curves/ell_point.py @@ -117,6 +117,7 @@ import math +from sage.misc.lazy_import import lazy_import from sage.rings.padics.factory import Qp from sage.rings.padics.precision_error import PrecisionError @@ -140,10 +141,12 @@ from sage.schemes.curves.projective_curve import Hasse_bounds from sage.schemes.projective.projective_point import (SchemeMorphism_point_projective_ring, SchemeMorphism_point_abelian_variety_field) -from sage.schemes.generic.morphism import is_SchemeMorphism from .constructor import EllipticCurve +lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') + try: from sage.libs.pari.all import pari, PariError from cypari2.pari_instance import prec_words_to_bits @@ -179,7 +182,8 @@ def curve(self): sage: K. = 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() @@ -294,7 +298,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, EllipticCurvePoint_field)) v = list(v) elif v == 0: v = (R.zero(), R.one(), R.zero()) diff --git a/src/sage/schemes/generic/divisor.py b/src/sage/schemes/generic/divisor.py index d46b8caff0e..8e72d2d816a 100644 --- a/src/sage/schemes/generic/divisor.py +++ b/src/sage/schemes/generic/divisor.py @@ -42,14 +42,16 @@ #******************************************************************************* 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') +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') def CurvePointToIdeal(C,P): @@ -358,7 +360,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, EllipticCurvePoint_field)): I = CurvePointToIdeal(C,I) else: know_points = False diff --git a/src/sage/schemes/generic/glue.py b/src/sage/schemes/generic/glue.py index e70aafa0507..9c2bc938f33 100644 --- a/src/sage/schemes/generic/glue.py +++ b/src/sage/schemes/generic/glue.py @@ -8,10 +8,14 @@ # 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') +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') + + +class GluedScheme(Scheme): r""" INPUT: @@ -48,9 +52,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, EllipticCurvePoint_field)): raise TypeError("f (=%s) must be a scheme morphism" % f) - if not morphism.is_SchemeMorphism(g): + if not isinstance(g, (SchemeMorphism, EllipticCurvePoint_field)): 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)) diff --git a/src/sage/schemes/generic/scheme.py b/src/sage/schemes/generic/scheme.py index 715c9d2a687..28a3cdd3d11 100644 --- a/src/sage/schemes/generic/scheme.py +++ b/src/sage/schemes/generic/scheme.py @@ -19,13 +19,17 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.structure.parent import Parent -from sage.misc.cachefunc import cached_method -from sage.rings.integer_ring import ZZ 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.ideal import is_Ideal -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_point', 'EllipticCurvePoint_field') def is_Scheme(x): @@ -104,7 +108,6 @@ def __init__(self, X=None, category=None): 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 @@ -112,7 +115,7 @@ def __init__(self, X=None, category=None): self._base_ring = ZZ elif isinstance(X, Scheme): self._base_scheme = X - elif is_SchemeMorphism(X): + elif isinstance(X, (SchemeMorphism, EllipticCurvePoint_field)): self._base_morphism = X elif X in CommutativeRings(): self._base_ring = X diff --git a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py index 2a192248180..41ef57b8e72 100644 --- a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py +++ b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py @@ -42,14 +42,16 @@ # 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') +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') class JacobianHomset_divisor_classes(SchemeHomset_points): @@ -139,12 +141,13 @@ 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, EllipticCurvePoint_field)) + and isinstance(P2, (SchemeMorphism, EllipticCurvePoint_field))): 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, EllipticCurvePoint_field)): x0 = P[0] y0 = P[1] R, x = PolynomialRing(self.value_ring(), 'x').objgen() diff --git a/src/sage/schemes/projective/projective_point.py b/src/sage/schemes/projective/projective_point.py index 1efc16af934..91d7aa49a63 100644 --- a/src/sage/schemes/projective/projective_point.py +++ b/src/sage/schemes/projective/projective_point.py @@ -38,15 +38,16 @@ from sage.arith.misc import GCD as gcd from sage.arith.functions import lcm from sage.misc.misc_c import prod +from sage.misc.lazy_import import lazy_import from copy import copy from sage.schemes.generic.morphism import (SchemeMorphism, - is_SchemeMorphism, SchemeMorphism_point) from sage.structure.element import AdditiveGroupElement from sage.structure.sequence import Sequence from sage.structure.richcmp import richcmp, op_EQ, op_NE +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') # -------------------- # Projective varieties @@ -164,7 +165,7 @@ def __init__(self, X, v, check=True): from sage.schemes.elliptic_curves.ell_point import EllipticCurvePoint_field from sage.rings.ring import CommutativeRing d = X.codomain().ambient_space().ngens() - if is_SchemeMorphism(v) or isinstance(v, EllipticCurvePoint_field): + if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): v = list(v) else: try: @@ -1138,10 +1139,9 @@ def __init__(self, X, v, check=True): self._normalized = False if check: - from sage.schemes.elliptic_curves.ell_point import EllipticCurvePoint_field from sage.rings.ring import CommutativeRing d = X.codomain().ambient_space().ngens() - if is_SchemeMorphism(v) or isinstance(v, EllipticCurvePoint_field): + if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): v = list(v) else: try: diff --git a/src/sage/schemes/toric/morphism.py b/src/sage/schemes/toric/morphism.py index e95e071d864..f53287847c0 100644 --- a/src/sage/schemes/toric/morphism.py +++ b/src/sage/schemes/toric/morphism.py @@ -362,24 +362,24 @@ # 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 from sage.misc.cachefunc import cached_method from sage.matrix.constructor import matrix, identity_matrix +from sage.misc.lazy_import import lazy_import from sage.modules.free_module_element import vector from sage.geometry.cone import Cone from sage.geometry.fan import Fan from sage.schemes.generic.scheme import Scheme from sage.schemes.generic.morphism import ( - is_SchemeMorphism, SchemeMorphism, SchemeMorphism_point, SchemeMorphism_polynomial ) +lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') + ############################################################################ # A points on a toric variety determined by homogeneous coordinates. @@ -431,7 +431,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, EllipticCurvePoint_field)): coordinates = list(coordinates) if not isinstance(coordinates, (list, tuple)): raise TypeError("coordinates must be a scheme point, list, " From 92a768ae57426a5e9aa34c0de6a7366809ceca2e Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Thu, 27 Jun 2024 18:25:56 -0700 Subject: [PATCH 4/6] Fixup --- src/sage/schemes/affine/affine_point.py | 1 - src/sage/schemes/elliptic_curves/ell_point.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/sage/schemes/affine/affine_point.py b/src/sage/schemes/affine/affine_point.py index 2e1d4821bc5..4aedd5e5f26 100644 --- a/src/sage/schemes/affine/affine_point.py +++ b/src/sage/schemes/affine/affine_point.py @@ -27,7 +27,6 @@ from sage.schemes.generic.morphism import SchemeMorphism_point, SchemeMorphism from sage.structure.sequence import Sequence -lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') _NumberFields = NumberFields() diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py index 6262cde5c06..53cbad7f266 100644 --- a/src/sage/schemes/elliptic_curves/ell_point.py +++ b/src/sage/schemes/elliptic_curves/ell_point.py @@ -298,7 +298,7 @@ def __init__(self, curve, v, check=True): """ point_homset = curve.point_homset() R = point_homset.value_ring() - if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)) + if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): v = list(v) elif v == 0: v = (R.zero(), R.one(), R.zero()) From 2cd04766920fedcab096d97fdc4236c0da583d20 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Wed, 17 Jul 2024 19:04:00 +0900 Subject: [PATCH 5/6] Simplify isinstance calls based on issubclass(EllipticCurvePoint_field, SchemeMorphism) -> True --- src/sage/categories/schemes.py | 3 +-- src/sage/schemes/affine/affine_point.py | 4 +--- src/sage/schemes/elliptic_curves/ell_point.py | 3 +-- src/sage/schemes/generic/divisor.py | 3 +-- src/sage/schemes/generic/glue.py | 5 ++--- src/sage/schemes/generic/morphism.py | 8 +++----- src/sage/schemes/generic/scheme.py | 3 +-- src/sage/schemes/hyperelliptic_curves/jacobian_homset.py | 6 ++---- src/sage/schemes/projective/projective_point.py | 7 ++----- src/sage/schemes/toric/morphism.py | 4 +--- 10 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/sage/categories/schemes.py b/src/sage/categories/schemes.py index 8ee338244df..f00346ec59f 100644 --- a/src/sage/categories/schemes.py +++ b/src/sage/categories/schemes.py @@ -27,7 +27,6 @@ from sage.misc.lazy_import import lazy_import lazy_import('sage.categories.map', 'Map') -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') lazy_import('sage.schemes.generic.scheme', 'Scheme') @@ -146,7 +145,7 @@ def _call_(self, x): To: Rational Field """ - if isinstance(x, (EllipticCurvePoint_field, SchemeMorphism, Scheme)): + if isinstance(x, (SchemeMorphism, Scheme)): return x from sage.categories.commutative_rings import CommutativeRings from sage.schemes.generic.spec import Spec diff --git a/src/sage/schemes/affine/affine_point.py b/src/sage/schemes/affine/affine_point.py index 4aedd5e5f26..206fd0b00f0 100644 --- a/src/sage/schemes/affine/affine_point.py +++ b/src/sage/schemes/affine/affine_point.py @@ -27,8 +27,6 @@ from sage.schemes.generic.morphism import SchemeMorphism_point, SchemeMorphism from sage.structure.sequence import Sequence -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') - _NumberFields = NumberFields() @@ -72,7 +70,7 @@ def __init__(self, X, v, check=True): SchemeMorphism.__init__(self, X) if check: from sage.categories.commutative_rings import CommutativeRings - if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): + if isinstance(v, SchemeMorphism): v = list(v) else: try: diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py index 53cbad7f266..196312f5720 100644 --- a/src/sage/schemes/elliptic_curves/ell_point.py +++ b/src/sage/schemes/elliptic_curves/ell_point.py @@ -145,7 +145,6 @@ from .constructor import EllipticCurve lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') try: from sage.libs.pari.all import pari, PariError @@ -298,7 +297,7 @@ def __init__(self, curve, v, check=True): """ point_homset = curve.point_homset() R = point_homset.value_ring() - if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): + if isinstance(v, SchemeMorphism): v = list(v) elif v == 0: v = (R.zero(), R.one(), R.zero()) diff --git a/src/sage/schemes/generic/divisor.py b/src/sage/schemes/generic/divisor.py index 8e72d2d816a..27d8dbfa45c 100644 --- a/src/sage/schemes/generic/divisor.py +++ b/src/sage/schemes/generic/divisor.py @@ -51,7 +51,6 @@ from sage.structure.formal_sum import FormalSum lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') def CurvePointToIdeal(C,P): @@ -360,7 +359,7 @@ def __init__(self, v, parent=None, check=True, reduce=True): else: n = ZZ(1) I = t - if isinstance(I, (SchemeMorphism, EllipticCurvePoint_field)): + if isinstance(I, SchemeMorphism): I = CurvePointToIdeal(C,I) else: know_points = False diff --git a/src/sage/schemes/generic/glue.py b/src/sage/schemes/generic/glue.py index 9c2bc938f33..1e4256e4b3d 100644 --- a/src/sage/schemes/generic/glue.py +++ b/src/sage/schemes/generic/glue.py @@ -12,7 +12,6 @@ from sage.schemes.generic.scheme import Scheme lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') class GluedScheme(Scheme): @@ -52,9 +51,9 @@ class GluedScheme(Scheme): """ def __init__(self, f, g, check=True): if check: - if not isinstance(f, (SchemeMorphism, EllipticCurvePoint_field)): + if not isinstance(f, SchemeMorphism): raise TypeError("f (=%s) must be a scheme morphism" % f) - if not isinstance(g, (SchemeMorphism, EllipticCurvePoint_field)): + 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)) diff --git a/src/sage/schemes/generic/morphism.py b/src/sage/schemes/generic/morphism.py index 3fe58df04de..d03be19122c 100644 --- a/src/sage/schemes/generic/morphism.py +++ b/src/sage/schemes/generic/morphism.py @@ -90,8 +90,6 @@ from sage.structure.richcmp import richcmp from sage.structure.sequence import Sequence -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') - def is_SchemeMorphism(f): """ @@ -116,15 +114,15 @@ def is_SchemeMorphism(f): sage: is_SchemeMorphism(f) doctest:warning... DeprecationWarning: The function is_SchemeMorphism is deprecated; - use 'isinstance(..., (SchemeMorphism, EllipticCurvePoint_field))' instead. + use 'isinstance(..., SchemeMorphism)' instead. See https://github.com/sagemath/sage/issues/38296 for details. True """ from sage.misc.superseded import deprecation deprecation(38296, "The function is_SchemeMorphism is deprecated; " - "use 'isinstance(..., (SchemeMorphism, EllipticCurvePoint_field))' instead.") - return isinstance(f, (SchemeMorphism, EllipticCurvePoint_field)) + "use 'isinstance(..., SchemeMorphism)' instead.") + return isinstance(f, SchemeMorphism) class SchemeMorphism(Element): diff --git a/src/sage/schemes/generic/scheme.py b/src/sage/schemes/generic/scheme.py index 28a3cdd3d11..cac07a1e9c7 100644 --- a/src/sage/schemes/generic/scheme.py +++ b/src/sage/schemes/generic/scheme.py @@ -29,7 +29,6 @@ from sage.structure.unique_representation import UniqueRepresentation lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') def is_Scheme(x): @@ -115,7 +114,7 @@ def __init__(self, X=None, category=None): self._base_ring = ZZ elif isinstance(X, Scheme): self._base_scheme = X - elif isinstance(X, (SchemeMorphism, EllipticCurvePoint_field)): + elif isinstance(X, SchemeMorphism): self._base_morphism = X elif X in CommutativeRings(): self._base_ring = X diff --git a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py index 41ef57b8e72..29c98369259 100644 --- a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py +++ b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py @@ -51,7 +51,6 @@ from sage.schemes.hyperelliptic_curves.jacobian_morphism import JacobianMorphism_divisor_class_field lazy_import('sage.schemes.generic.morphism', 'SchemeMorphism') -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') class JacobianHomset_divisor_classes(SchemeHomset_points): @@ -141,13 +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 (isinstance(P1, (SchemeMorphism, EllipticCurvePoint_field)) - and isinstance(P2, (SchemeMorphism, EllipticCurvePoint_field))): + 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 isinstance(P, (SchemeMorphism, EllipticCurvePoint_field)): + elif isinstance(P, SchemeMorphism): x0 = P[0] y0 = P[1] R, x = PolynomialRing(self.value_ring(), 'x').objgen() diff --git a/src/sage/schemes/projective/projective_point.py b/src/sage/schemes/projective/projective_point.py index 91d7aa49a63..84409b25bef 100644 --- a/src/sage/schemes/projective/projective_point.py +++ b/src/sage/schemes/projective/projective_point.py @@ -47,8 +47,6 @@ from sage.structure.sequence import Sequence from sage.structure.richcmp import richcmp, op_EQ, op_NE -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') - # -------------------- # Projective varieties # -------------------- @@ -162,10 +160,9 @@ def __init__(self, X, v, check=True): SchemeMorphism.__init__(self, X) if check: - from sage.schemes.elliptic_curves.ell_point import EllipticCurvePoint_field from sage.rings.ring import CommutativeRing d = X.codomain().ambient_space().ngens() - if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): + if isinstance(v, SchemeMorphism): v = list(v) else: try: @@ -1141,7 +1138,7 @@ def __init__(self, X, v, check=True): if check: from sage.rings.ring import CommutativeRing d = X.codomain().ambient_space().ngens() - if isinstance(v, (SchemeMorphism, EllipticCurvePoint_field)): + if isinstance(v, SchemeMorphism): v = list(v) else: try: diff --git a/src/sage/schemes/toric/morphism.py b/src/sage/schemes/toric/morphism.py index f53287847c0..b1097570910 100644 --- a/src/sage/schemes/toric/morphism.py +++ b/src/sage/schemes/toric/morphism.py @@ -378,8 +378,6 @@ SchemeMorphism, SchemeMorphism_point, SchemeMorphism_polynomial ) -lazy_import('sage.schemes.elliptic_curves.ell_point', 'EllipticCurvePoint_field') - ############################################################################ # A points on a toric variety determined by homogeneous coordinates. @@ -431,7 +429,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 isinstance(coordinates, (SchemeMorphism, EllipticCurvePoint_field)): + if isinstance(coordinates, SchemeMorphism): coordinates = list(coordinates) if not isinstance(coordinates, (list, tuple)): raise TypeError("coordinates must be a scheme point, list, " From 95f4c8bebe94a15cd001b96fa3d6bad8de836c82 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Wed, 17 Jul 2024 19:08:22 +0900 Subject: [PATCH 6/6] Remove unused imports --- src/sage/schemes/generic/morphism.py | 1 - src/sage/schemes/projective/projective_point.py | 1 - src/sage/schemes/toric/morphism.py | 1 - 3 files changed, 3 deletions(-) diff --git a/src/sage/schemes/generic/morphism.py b/src/sage/schemes/generic/morphism.py index d03be19122c..a65d896b96c 100644 --- a/src/sage/schemes/generic/morphism.py +++ b/src/sage/schemes/generic/morphism.py @@ -82,7 +82,6 @@ from sage.categories.morphism import SetMorphism from sage.misc.constant_function import ConstantFunction from sage.misc.lazy_attribute import lazy_attribute -from sage.misc.lazy_import import lazy_import 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 diff --git a/src/sage/schemes/projective/projective_point.py b/src/sage/schemes/projective/projective_point.py index 84409b25bef..fb5265ee3c0 100644 --- a/src/sage/schemes/projective/projective_point.py +++ b/src/sage/schemes/projective/projective_point.py @@ -38,7 +38,6 @@ from sage.arith.misc import GCD as gcd from sage.arith.functions import lcm from sage.misc.misc_c import prod -from sage.misc.lazy_import import lazy_import from copy import copy from sage.schemes.generic.morphism import (SchemeMorphism, diff --git a/src/sage/schemes/toric/morphism.py b/src/sage/schemes/toric/morphism.py index b1097570910..615de11ebe2 100644 --- a/src/sage/schemes/toric/morphism.py +++ b/src/sage/schemes/toric/morphism.py @@ -368,7 +368,6 @@ from sage.arith.misc import GCD as gcd from sage.misc.cachefunc import cached_method from sage.matrix.constructor import matrix, identity_matrix -from sage.misc.lazy_import import lazy_import from sage.modules.free_module_element import vector from sage.geometry.cone import Cone from sage.geometry.fan import Fan