diff --git a/src/bin/sage-fixdoctests b/src/bin/sage-fixdoctests index 49de702cd51..0d55581c505 100755 --- a/src/bin/sage-fixdoctests +++ b/src/bin/sage-fixdoctests @@ -300,6 +300,9 @@ def process_block(block, src_in_lines, file_optional_tags, venv_explainer=''): got = [''] else: expected, got = block.split('\nGot:\n') + got = re.sub(r'(doctest:warning).*^( *DeprecationWarning:)', + r'\1...\n\2', + got, 1, re.DOTALL | re.MULTILINE) got = got.splitlines() # got can't be the empty string if args.only_tags: diff --git a/src/sage/categories/schemes.py b/src/sage/categories/schemes.py index 0d62237a636..cb1133a2192 100644 --- a/src/sage/categories/schemes.py +++ b/src/sage/categories/schemes.py @@ -139,8 +139,8 @@ def _call_(self, x): To: Rational Field """ - from sage.schemes.generic.scheme import is_Scheme - if is_Scheme(x): + 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): @@ -197,9 +197,9 @@ def _repr_object_names(self): sage: Schemes(Spec(ZZ)) # indirect doctest Category of schemes over Integer Ring """ - from sage.schemes.generic.scheme import is_AffineScheme + from sage.schemes.generic.scheme import AffineScheme base = self.base() - if is_AffineScheme(base): + if isinstance(base, AffineScheme): base = base.coordinate_ring() return f"schemes over {base}" @@ -228,8 +228,8 @@ def __init__(self, base): sage: AbelianVarieties(Spec(QQ)) Category of abelian varieties over Rational Field """ - from sage.schemes.generic.scheme import is_AffineScheme - if is_AffineScheme(base): + from sage.schemes.generic.scheme import AffineScheme + if isinstance(base, AffineScheme): base = base.coordinate_ring() if base not in Fields(): raise ValueError('category of abelian varieties is only defined over fields') @@ -331,8 +331,8 @@ def __init__(self, base): sage: Jacobians(Spec(QQ)) Category of Jacobians over Rational Field """ - from sage.schemes.generic.scheme import is_AffineScheme - if is_AffineScheme(base): + from sage.schemes.generic.scheme import AffineScheme + if isinstance(base, AffineScheme): base = base.coordinate_ring() if base not in Fields(): raise ValueError('category of Jacobians is only defined over fields') diff --git a/src/sage/dynamics/arithmetic_dynamics/affine_ds.py b/src/sage/dynamics/arithmetic_dynamics/affine_ds.py index 6938068bbc6..a1e4bc1700d 100644 --- a/src/sage/dynamics/arithmetic_dynamics/affine_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/affine_ds.py @@ -50,7 +50,7 @@ class initialization directly. 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 -from sage.schemes.affine.affine_space import is_AffineSpace +from sage.schemes.affine.affine_space import AffineSpace_generic from sage.schemes.affine.affine_space import AffineSpace from sage.schemes.affine.affine_subscheme import AlgebraicScheme_subscheme_affine from sage.schemes.generic.morphism import SchemeMorphism_polynomial @@ -246,7 +246,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None): R = morphism.base_ring() polys = list(morphism) domain = morphism.domain() - if not is_AffineSpace(domain) and not isinstance(domain, AlgebraicScheme_subscheme_affine): + if not isinstance(domain, AffineSpace_generic) and not isinstance(domain, AlgebraicScheme_subscheme_affine): raise ValueError('"domain" must be an affine scheme') if domain != morphism_or_polys.codomain(): raise ValueError('domain and codomain do not agree') @@ -295,7 +295,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None): R = domain.base_ring() if isinstance(R, sage.rings.abc.SymbolicRing): raise TypeError("symbolic ring cannot be the base ring") - if not is_AffineSpace(domain) and not isinstance(domain, AlgebraicScheme_subscheme_affine): + if not isinstance(domain, AffineSpace_generic) and not isinstance(domain, AlgebraicScheme_subscheme_affine): raise ValueError('"domain" must be an affine scheme') if R not in Fields(): @@ -523,8 +523,8 @@ def dynatomic_polynomial(self, period): sage: G.dehomogenize(1).dynatomic_polynomial(2) (1/4*c + 1/4)*x^2 + (-c - 1/2)*x + c + 1 """ - from sage.schemes.affine.affine_space import is_AffineSpace - if not is_AffineSpace(self.domain()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if not isinstance(self.domain(), AffineSpace_generic): raise NotImplementedError("not implemented for subschemes") if self.domain().dimension_relative() > 1: raise TypeError("does not make sense in dimension >1") @@ -1065,8 +1065,8 @@ def cyclegraph(self): """ V = [] E = [] - from sage.schemes.affine.affine_space import is_AffineSpace - if is_AffineSpace(self.domain()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if isinstance(self.domain(), AffineSpace_generic): for P in self.domain(): V.append(str(P)) Q = self(P) diff --git a/src/sage/dynamics/arithmetic_dynamics/berkovich_ds.py b/src/sage/dynamics/arithmetic_dynamics/berkovich_ds.py index 5559a48ecce..be1ef46b251 100644 --- a/src/sage/dynamics/arithmetic_dynamics/berkovich_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/berkovich_ds.py @@ -34,11 +34,11 @@ from sage.rings.infinity import Infinity from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.schemes.affine.affine_space import is_AffineSpace +from sage.schemes.affine.affine_space import AffineSpace_generic from sage.schemes.berkovich.berkovich_space import (Berkovich_Cp_Affine, - Berkovich_Cp_Projective, is_Berkovich_Cp, + Berkovich_Cp_Projective, Berkovich_Cp, Berkovich_Element_Cp_Affine) -from sage.schemes.projective.projective_space import is_ProjectiveSpace +from sage.schemes.projective.projective_space import ProjectiveSpace_ring from sage.structure.element import Element lazy_import('sage.rings.padics.padic_base_generic', 'pAdicBaseGeneric') @@ -241,7 +241,7 @@ def __classcall_private__(cls, dynamical_system, domain=None, ideal=None): 2*3^7 + 2*3^8 + 2*3^9 + 2*3^10 + 2*3^11 + 2*3^12 + 2*3^13 + 2*3^14 + 2*3^15 + 2*3^16 + 2*3^17 + 2*3^18 + 2*3^19 + 2*3^20 + O(3^21)) """ - if not (is_Berkovich_Cp(domain) or domain is None): + if not (isinstance(domain, Berkovich_Cp) or domain is None): raise TypeError('domain must be a Berkovich space over Cp, not %s' % domain) if isinstance(domain, Berkovich_Cp_Affine): @@ -269,7 +269,7 @@ def __classcall_private__(cls, dynamical_system, domain=None, ideal=None): if not isinstance(morphism_domain.base_ring(), pAdicBaseGeneric): if morphism_domain.base_ring() in NumberFields(): if domain is None and ideal is not None: - if is_AffineSpace(morphism_domain): + if isinstance(morphism_domain, AffineSpace_generic): domain = Berkovich_Cp_Affine(morphism_domain.base_ring(), ideal) else: domain = Berkovich_Cp_Projective(morphism_domain, ideal) @@ -281,7 +281,7 @@ def __classcall_private__(cls, dynamical_system, domain=None, ideal=None): raise ValueError('base ring of domain of dynamical_system must be p-adic or a number field ' 'not %s' % morphism_domain.base_ring()) - if is_AffineSpace(morphism_domain): + if isinstance(morphism_domain, AffineSpace_generic): return DynamicalSystem_Berkovich_affine(dynamical_system, domain) return DynamicalSystem_Berkovich_projective(dynamical_system, domain) @@ -531,7 +531,7 @@ def __classcall_private__(cls, dynamical_system, domain=None): raise TypeError('affine dynamical system passed to projective constructor') R = dynamical_system.base_ring() morphism_domain = dynamical_system.domain() - if not is_ProjectiveSpace(morphism_domain): + if not isinstance(morphism_domain, ProjectiveSpace_ring): raise TypeError('the domain of dynamical_system must be projective space, not %s' % morphism_domain) if morphism_domain.dimension_relative() != 1: raise ValueError('domain was not relative dimension 1') @@ -1015,7 +1015,7 @@ def __classcall_private__(cls, dynamical_system, domain=None): raise TypeError('projective dynamical system passed to affine constructor') R = dynamical_system.base_ring() morphism_domain = dynamical_system.domain() - if not is_AffineSpace(morphism_domain): + if not isinstance(morphism_domain, AffineSpace_generic): raise TypeError('the domain of dynamical_system must be affine space, not %s' % morphism_domain) if morphism_domain.dimension_relative() != 1: raise ValueError('domain not relative dimension 1') diff --git a/src/sage/dynamics/arithmetic_dynamics/generic_ds.py b/src/sage/dynamics/arithmetic_dynamics/generic_ds.py index 0afff17895c..be678cca40a 100644 --- a/src/sage/dynamics/arithmetic_dynamics/generic_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/generic_ds.py @@ -34,9 +34,9 @@ class initialization directly. from sage.misc.lazy_import import lazy_import from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.rational_field import QQ -from sage.schemes.affine.affine_space import is_AffineSpace +from sage.schemes.affine.affine_space import AffineSpace_generic from sage.schemes.affine.affine_subscheme import AlgebraicScheme_subscheme_affine -from sage.schemes.berkovich.berkovich_space import is_Berkovich_Cp +from sage.schemes.berkovich.berkovich_space import Berkovich_Cp from sage.schemes.generic.morphism import SchemeMorphism_polynomial lazy_import('sage.rings.algebraic_closure_finite_field', 'AlgebraicClosureFiniteField_generic') @@ -165,10 +165,10 @@ def __classcall_private__(cls, morphism_or_polys, domain=None, names=None): if isinstance(morphism_or_polys, SchemeMorphism_polynomial): domain = morphism_or_polys.domain() if domain is not None: - if is_AffineSpace(domain) or isinstance(domain, AlgebraicScheme_subscheme_affine): + if isinstance(domain, AffineSpace_generic) or isinstance(domain, AlgebraicScheme_subscheme_affine): from sage.dynamics.arithmetic_dynamics.affine_ds import DynamicalSystem_affine return DynamicalSystem_affine(morphism_or_polys, domain) - if is_Berkovich_Cp(domain): + if isinstance(domain, Berkovich_Cp): from sage.dynamics.arithmetic_dynamics.berkovich_ds import DynamicalSystem_Berkovich return DynamicalSystem_Berkovich(morphism_or_polys,domain) diff --git a/src/sage/dynamics/arithmetic_dynamics/product_projective_ds.py b/src/sage/dynamics/arithmetic_dynamics/product_projective_ds.py index 44565197717..706bb28cbef 100644 --- a/src/sage/dynamics/arithmetic_dynamics/product_projective_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/product_projective_ds.py @@ -327,8 +327,8 @@ def cyclegraph(self): """ V = [] E = [] - from sage.schemes.product_projective.space import is_ProductProjectiveSpaces - if is_ProductProjectiveSpaces(self.domain()): + from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring + if isinstance(self.domain(), ProductProjectiveSpaces_ring): for P in self.domain(): V.append(str(P)) Q = self(P) diff --git a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py index 4b42ad87b1f..66fdf03ecd7 100644 --- a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py @@ -103,12 +103,12 @@ class initialization directly. from sage.rings.rational_field import QQ from sage.rings.real_mpfr import RealField from sage.schemes.generic.morphism import SchemeMorphism_polynomial -from sage.schemes.product_projective.space import is_ProductProjectiveSpaces +from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring from sage.schemes.projective.projective_morphism import ( SchemeMorphism_polynomial_projective_space, SchemeMorphism_polynomial_projective_space_field, SchemeMorphism_polynomial_projective_space_finite_field) -from sage.schemes.projective.projective_space import ProjectiveSpace, is_ProjectiveSpace +from sage.schemes.projective.projective_space import ProjectiveSpace, ProjectiveSpace_ring from sage.schemes.projective.projective_subscheme import AlgebraicScheme_subscheme_projective from sage.structure.element import get_coercion_model @@ -374,7 +374,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None, names=None): polys = list(morphism_or_polys) if domain != morphism_or_polys.codomain(): raise ValueError('domain and codomain do not agree') - if not is_ProjectiveSpace(domain) and not isinstance(domain, AlgebraicScheme_subscheme_projective): + if not isinstance(domain, ProjectiveSpace_ring) and not isinstance(domain, AlgebraicScheme_subscheme_projective): raise ValueError('"domain" must be a projective scheme') if R not in Fields(): return typecall(cls, polys, domain) @@ -430,7 +430,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None, names=None): if isinstance(R, sage.rings.abc.SymbolicRing): raise TypeError("the base ring cannot be the Symbolic Ring or a symbolic subring") - if is_ProductProjectiveSpaces(domain): + if isinstance(domain, ProductProjectiveSpaces_ring): splitpolys = domain._factors(polys) for split_poly in splitpolys: split_d = domain._degree(split_poly[0]) @@ -451,7 +451,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None, names=None): msg = 'polys (={}) must be of the same degree' raise ValueError(msg.format(polys)) - if not is_ProjectiveSpace(domain) and not isinstance(domain, AlgebraicScheme_subscheme_projective): + if not isinstance(domain, ProjectiveSpace_ring) and not isinstance(domain, AlgebraicScheme_subscheme_projective): raise ValueError('"domain" must be a projective scheme') if R not in Fields(): return typecall(cls, polys, domain) @@ -1264,7 +1264,7 @@ def arakelov_zhang_pairing(self, g, **kwds): if n <= 0: raise ValueError("Period must be a positive integer.") - if not (is_ProjectiveSpace(f_domain) and is_ProjectiveSpace(g_domain)): + if not (isinstance(f_domain, ProjectiveSpace_ring) and isinstance(g_domain, ProjectiveSpace_ring)): raise NotImplementedError("Not implemented for subschemes.") if f_domain.dimension_relative() > 1: @@ -1804,7 +1804,7 @@ def primes_of_bad_reduction(self, check=True): sage: f.primes_of_bad_reduction() # needs sage.rings.function_field [5, 37, 2239, 304432717] """ - if (not is_ProjectiveSpace(self.domain())) or (not is_ProjectiveSpace(self.codomain())): + if (not isinstance(self.domain(), ProjectiveSpace_ring)) or (not isinstance(self.codomain(), ProjectiveSpace_ring)): raise NotImplementedError("not implemented for subschemes") K = FractionField(self.codomain().base_ring()) #The primes of bad reduction are the support of the resultant for number fields @@ -3771,7 +3771,7 @@ def critical_subscheme(self): TypeError: the function is not a morphism """ PS = self.domain() - if not is_ProjectiveSpace(PS): + if not isinstance(PS, ProjectiveSpace_ring): raise NotImplementedError("not implemented for subschemes") if not self.is_morphism(): raise TypeError("the function is not a morphism") @@ -4080,7 +4080,7 @@ def is_dynamical_belyi_map(self): False """ P = self.codomain() - if not is_ProjectiveSpace(P): + if not isinstance(P, ProjectiveSpace_ring): raise NotImplementedError('only implemented for dynamical systems on projective space') if P.dimension_relative() != 1: raise NotImplementedError('only implemented for maps on projective space of dimension 1') @@ -5238,7 +5238,7 @@ def multiplier_spectra(self, n, formal=False, type='point', use_algebraic_closur if (n < 1): raise ValueError("period must be a positive integer") - if not is_ProjectiveSpace(PS): + if not isinstance(PS, ProjectiveSpace_ring): raise NotImplementedError("not implemented for subschemes") if PS.dimension_relative() > 1: @@ -5746,7 +5746,7 @@ def sigma_invariants(self, n, formal=False, embedding=None, type='point', if n < 1: raise ValueError("period must be a positive integer") dom = self.domain() - if not is_ProjectiveSpace(dom): + if not isinstance(dom, ProjectiveSpace_ring): raise NotImplementedError("not implemented for subschemes") if self.degree() <= 1: raise TypeError("must have degree at least 2") @@ -6397,7 +6397,7 @@ def _is_preperiodic(self, P, err=0.1, return_period=False): True """ codomain = self.codomain() - if not is_ProjectiveSpace(codomain): + if not isinstance(codomain, ProjectiveSpace_ring): # in order to calculate the canonical height, we need # this map to be a morphism of projective space ambient_space = codomain.ambient_space() @@ -6516,7 +6516,7 @@ def postcritical_set(self, check=True): sage: g.postcritical_set() [(1 : 0), (0 : 1), (a + 2 : 1)] """ - if not is_ProjectiveSpace(self.domain()): + if not isinstance(self.domain(), ProjectiveSpace_ring): raise ValueError('must be a dynamical system on projective space') if self.domain().dimension_relative() != 1: raise ValueError('must be defined on projective space of dimension 1') @@ -9106,7 +9106,7 @@ def cyclegraph(self): """ V = [] E = [] - if is_ProjectiveSpace(self.domain()): + if isinstance(self.domain(), ProjectiveSpace_ring): for P in self.domain(): V.append(P) try: diff --git a/src/sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx b/src/sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx index f05806f4935..08efef94554 100644 --- a/src/sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +++ b/src/sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx @@ -82,8 +82,8 @@ cpdef _fast_possible_periods(self, return_points=False): raise TypeError("must be prime field") PS = self.domain() - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if not is_ProjectiveSpace(PS) or PS != self.codomain(): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if not isinstance(PS, ProjectiveSpace_ring) or PS != self.codomain(): raise NotImplementedError("must be an endomorphism of projective space") p = PS.base_ring().order() diff --git a/src/sage/schemes/affine/affine_homset.py b/src/sage/schemes/affine/affine_homset.py index b6570bd6f6d..a54d4d68c3c 100644 --- a/src/sage/schemes/affine/affine_homset.py +++ b/src/sage/schemes/affine/affine_homset.py @@ -261,10 +261,10 @@ def points(self, **kwds): may be computed partially or incorrectly. [(0.0, 0.0)] """ - from sage.schemes.affine.affine_space import is_AffineSpace + from sage.schemes.affine.affine_space import AffineSpace_generic X = self.codomain() - if not is_AffineSpace(X) and X.base_ring() in Fields(): + if not isinstance(X, AffineSpace_generic) and X.base_ring() in Fields(): if hasattr(X.base_ring(), 'precision'): numerical = True verbose("Warning: computations in the numerical fields are inexact;points may be computed partially or incorrectly.", level=0) @@ -436,7 +436,7 @@ def numerical_points(self, F=None, **kwds): ... ValueError: tolerance must be positive """ - from sage.schemes.affine.affine_space import is_AffineSpace + from sage.schemes.affine.affine_space import AffineSpace_generic if F is None: F = CC if F not in Fields() or not hasattr(F, 'precision'): @@ -446,7 +446,7 @@ def numerical_points(self, F=None, **kwds): raise TypeError('base ring must be a number field') AA = X.ambient_space().change_ring(F) - if not is_AffineSpace(X) and X.base_ring() in Fields(): + if not isinstance(X, AffineSpace_generic) and X.base_ring() in Fields(): # Then X must be a subscheme dim_ideal = X.defining_ideal().dimension() if dim_ideal != 0: # no points diff --git a/src/sage/schemes/affine/affine_point.py b/src/sage/schemes/affine/affine_point.py index 00779dbb2d6..4e09c1e133a 100644 --- a/src/sage/schemes/affine/affine_point.py +++ b/src/sage/schemes/affine/affine_point.py @@ -372,8 +372,8 @@ def intersection_multiplicity(self, X): ... TypeError: this point must be a point on an affine subscheme """ - from sage.schemes.affine.affine_space import is_AffineSpace - if is_AffineSpace(self.codomain()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if isinstance(self.codomain(), AffineSpace_generic): raise TypeError("this point must be a point on an affine subscheme") return self.codomain().intersection_multiplicity(X, self) @@ -397,8 +397,8 @@ def multiplicity(self): sage: Q2.multiplicity() # needs sage.libs.singular 2 """ - from sage.schemes.affine.affine_space import is_AffineSpace - if is_AffineSpace(self.codomain()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if isinstance(self.codomain(), AffineSpace_generic): raise TypeError("this point must be a point on an affine subscheme") return self.codomain().multiplicity(self) diff --git a/src/sage/schemes/affine/affine_rational_point.py b/src/sage/schemes/affine/affine_rational_point.py index 4ac17a60d79..ff0b88c31f9 100644 --- a/src/sage/schemes/affine/affine_rational_point.py +++ b/src/sage/schemes/affine/affine_rational_point.py @@ -54,7 +54,7 @@ from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.schemes.generic.scheme import is_Scheme +from sage.schemes.generic.scheme import Scheme def enum_affine_rational_field(X, B): @@ -108,12 +108,12 @@ def enum_affine_rational_field(X, B): - Raman Raghukul 2018: updated. """ - from sage.schemes.affine.affine_space import is_AffineSpace - if is_Scheme(X): - if not is_AffineSpace(X.ambient_space()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), AffineSpace_generic): raise TypeError("ambient space must be affine space over the rational field") X = X(X.base_ring()) - elif not is_AffineSpace(X.codomain().ambient_space()): + elif not isinstance(X.codomain().ambient_space(), AffineSpace_generic): raise TypeError("codomain must be affine space over the rational field") n = X.codomain().ambient_space().ngens() @@ -215,12 +215,12 @@ def enum_affine_number_field(X, **kwds): B = kwds.pop('bound') tol = kwds.pop('tolerance', 1e-2) prec = kwds.pop('precision', 53) - from sage.schemes.affine.affine_space import is_AffineSpace - if is_Scheme(X): - if not is_AffineSpace(X.ambient_space()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), AffineSpace_generic): raise TypeError("ambient space must be affine space over a number field") X = X(X.base_ring()) - elif not is_AffineSpace(X.codomain().ambient_space()): + elif not isinstance(X.codomain().ambient_space(), AffineSpace_generic): raise TypeError("codomain must be affine space over a number field") R = X.codomain().ambient_space() @@ -289,12 +289,12 @@ def enum_affine_finite_field(X): - John Cremona and Charlie Turner (06-2010) """ - from sage.schemes.affine.affine_space import is_AffineSpace - if is_Scheme(X): - if not is_AffineSpace(X.ambient_space()): + from sage.schemes.affine.affine_space import AffineSpace_generic + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), AffineSpace_generic): raise TypeError("ambient space must be affine space over a finite field") X = X(X.base_ring()) - elif not is_AffineSpace(X.codomain().ambient_space()): + elif not isinstance(X.codomain().ambient_space(), AffineSpace_generic): raise TypeError("codomain must be affine space over a finite field") n = X.codomain().ambient_space().ngens() diff --git a/src/sage/schemes/affine/affine_space.py b/src/sage/schemes/affine/affine_space.py index 05d3c5b59e3..76316311615 100644 --- a/src/sage/schemes/affine/affine_space.py +++ b/src/sage/schemes/affine/affine_space.py @@ -46,12 +46,17 @@ def is_AffineSpace(x) -> bool: sage: from sage.schemes.affine.affine_space import is_AffineSpace sage: is_AffineSpace(AffineSpace(5, names='x')) + doctest:warning... + DeprecationWarning: The function is_AffineSpace is deprecated; use 'isinstance(..., AffineSpace_generic)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True sage: is_AffineSpace(AffineSpace(5, GF(9, 'alpha'), names='x')) # needs sage.rings.finite_rings True sage: is_AffineSpace(Spec(ZZ)) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_AffineSpace is deprecated; use 'isinstance(..., AffineSpace_generic)' instead.") return isinstance(x, AffineSpace_generic) diff --git a/src/sage/schemes/berkovich/berkovich_space.py b/src/sage/schemes/berkovich/berkovich_space.py index 100c2807b9d..766ae7c4388 100644 --- a/src/sage/schemes/berkovich/berkovich_space.py +++ b/src/sage/schemes/berkovich/berkovich_space.py @@ -35,8 +35,8 @@ from sage.schemes.berkovich.berkovich_cp_element import (Berkovich_Element_Cp_Affine, Berkovich_Element_Cp_Projective) from sage.structure.parent import Parent -from sage.schemes.affine.affine_space import is_AffineSpace -from sage.schemes.projective.projective_space import is_ProjectiveSpace, ProjectiveSpace +from sage.schemes.affine.affine_space import AffineSpace_generic +from sage.schemes.projective.projective_space import ProjectiveSpace_ring, ProjectiveSpace from sage.structure.unique_representation import UniqueRepresentation from sage.categories.number_fields import NumberFields import sage.rings.abc @@ -60,8 +60,13 @@ def is_Berkovich(space) -> bool: sage: B = Berkovich_Cp_Projective(3) sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich sage: is_Berkovich(B) + doctest:warning... + DeprecationWarning: The function is_Berkovich is deprecated; use 'isinstance(..., Berkovich)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_Berkovich is deprecated; use 'isinstance(..., Berkovich)' instead.") return isinstance(space, Berkovich) @@ -77,10 +82,15 @@ def is_Berkovich_Cp(space) -> bool: EXAMPLES:: sage: B = Berkovich_Cp_Projective(3) - sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich - sage: is_Berkovich(B) + sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich_Cp + sage: is_Berkovich_Cp(B) + doctest:warning... + DeprecationWarning: The function is_Berkovich_Cp is deprecated; use 'isinstance(..., Berkovich_Cp)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_Berkovich_Cp is deprecated; use 'isinstance(..., Berkovich_Cp)' instead.") return isinstance(space, Berkovich_Cp) @@ -433,7 +443,7 @@ def __init__(self, base, ideal=None): base = Qp(base) # change to Qpbar else: raise ValueError("non-prime passed into Berkovich space") - if is_AffineSpace(base): + if isinstance(base, AffineSpace_generic): base = base.base_ring() if base in NumberFields(): if ideal is None: @@ -630,7 +640,7 @@ def __init__(self, base, ideal=None): raise ValueError("non-prime passed into Berkovich space") if base in NumberFields() or isinstance(base, sage.rings.abc.pAdicField): base = ProjectiveSpace(base, 1) - if not is_ProjectiveSpace(base): + if not isinstance(base, ProjectiveSpace_ring): try: base = ProjectiveSpace(base) except (TypeError, ValueError): diff --git a/src/sage/schemes/curves/affine_curve.py b/src/sage/schemes/curves/affine_curve.py index efbc690b543..b3ed871794f 100644 --- a/src/sage/schemes/curves/affine_curve.py +++ b/src/sage/schemes/curves/affine_curve.py @@ -149,7 +149,7 @@ from sage.rings.rational_field import is_RationalField from sage.rings.infinity import infinity -from sage.schemes.affine.affine_space import AffineSpace, is_AffineSpace +from sage.schemes.affine.affine_space import AffineSpace, AffineSpace_generic from sage.schemes.affine.affine_subscheme import (AlgebraicScheme_subscheme_affine, AlgebraicScheme_subscheme_affine_field) @@ -209,7 +209,7 @@ def __init__(self, A, X): sage: C = Curve([x^2 - z, z - 8*x], A); C Affine Curve over Finite Field of size 7 defined by x^2 - z, -x + z """ - if not is_AffineSpace(A): + if not isinstance(A, AffineSpace_generic): raise TypeError("A (={}) must be an affine space".format(A)) Curve_generic.__init__(self, A, X) @@ -299,7 +299,7 @@ def __init__(self, A, f): Affine Plane Curve over Complex Field with 53 bits of precision defined by x^2 + y^2 """ - if not (is_AffineSpace(A) and A.dimension != 2): + if not (isinstance(A, AffineSpace_generic) and A.dimension != 2): raise TypeError("Argument A (= %s) must be an affine plane." % A) super().__init__(A, [f]) @@ -464,7 +464,7 @@ def plot(self, *args, **kwds): A 5-nodal curve of degree 11. This example also illustrates some of the optional arguments:: - sage: # needs sage.plot() + sage: # needs sage.plot sage: R. = ZZ[] sage: C = Curve(32*x^2 - 2097152*y^11 + 1441792*y^9 ....: - 360448*y^7 + 39424*y^5 - 1760*y^3 + 22*y - 1) @@ -998,7 +998,7 @@ def projection(self, indices, AS=None): if len(set(indices)) < len(indices): raise ValueError("(=%s) must be a list or tuple of distinct indices or variables" % indices) if AS is not None: - if not is_AffineSpace(AS): + if not isinstance(AS, AffineSpace_generic): raise TypeError("(=%s) must be an affine space" % AS) if AS.dimension_relative() != len(indices): raise TypeError("(=%s) must have dimension (=%s)" % (AS, len(indices))) diff --git a/src/sage/schemes/curves/constructor.py b/src/sage/schemes/curves/constructor.py index 3564cfd73cc..a49b2002495 100644 --- a/src/sage/schemes/curves/constructor.py +++ b/src/sage/schemes/curves/constructor.py @@ -46,10 +46,10 @@ from sage.structure.all import Sequence -from sage.schemes.generic.ambient_space import is_AmbientSpace -from sage.schemes.generic.algebraic_scheme import is_AlgebraicScheme -from sage.schemes.affine.affine_space import AffineSpace, is_AffineSpace -from sage.schemes.projective.projective_space import ProjectiveSpace, is_ProjectiveSpace +from sage.schemes.generic.ambient_space import AmbientSpace +from sage.schemes.generic.algebraic_scheme import AlgebraicScheme +from sage.schemes.affine.affine_space import AffineSpace, AffineSpace_generic +from sage.schemes.projective.projective_space import ProjectiveSpace, ProjectiveSpace_ring from sage.schemes.plane_conics.constructor import Conic from .projective_curve import (ProjectiveCurve, @@ -233,10 +233,10 @@ def Curve(F, A=None): 0 """ if A is None: - if is_AmbientSpace(F) and F.dimension() == 1: + if isinstance(F, AmbientSpace) and F.dimension() == 1: return Curve(F.coordinate_ring().zero(), F) - if is_AlgebraicScheme(F): + if isinstance(F, AlgebraicScheme): return Curve(F.defining_polynomials(), F.ambient_space()) if isinstance(F, (list, tuple)): @@ -291,7 +291,7 @@ def Curve(F, A=None): else: raise TypeError("F (={}) must be a multivariate polynomial".format(F)) else: - if not is_AmbientSpace(A): + if not isinstance(A, AmbientSpace): raise TypeError("ambient space must be either an affine or projective space") if not isinstance(F, (list, tuple)): F = [F] @@ -304,7 +304,7 @@ def Curve(F, A=None): k = A.base_ring() - if is_AffineSpace(A): + if isinstance(A, AffineSpace_generic): if n == 1: if A.coordinate_ring().ideal(F).is_zero(): if isinstance(k, FiniteField): @@ -337,7 +337,7 @@ def Curve(F, A=None): return AffinePlaneCurve_field(A, F) return AffinePlaneCurve(A, F) - elif is_ProjectiveSpace(A): + elif isinstance(A, ProjectiveSpace_ring): if n == 1: if A.coordinate_ring().ideal(F).is_zero(): if isinstance(k, FiniteField): diff --git a/src/sage/schemes/curves/projective_curve.py b/src/sage/schemes/curves/projective_curve.py index 1cc7fce0906..fb1edc7d0ad 100644 --- a/src/sage/schemes/curves/projective_curve.py +++ b/src/sage/schemes/curves/projective_curve.py @@ -158,7 +158,7 @@ from sage.rings.rational_field import is_RationalField from sage.rings.integer import Integer -from sage.schemes.projective.projective_space import ProjectiveSpace, is_ProjectiveSpace +from sage.schemes.projective.projective_space import ProjectiveSpace, ProjectiveSpace_ring from sage.schemes.projective.projective_subscheme import (AlgebraicScheme_subscheme_projective, AlgebraicScheme_subscheme_projective_field) @@ -215,7 +215,7 @@ def __init__(self, A, X, category=None): sage: loads(dumps(C)) == C True """ - if not is_ProjectiveSpace(A): + if not isinstance(A, ProjectiveSpace_ring): raise TypeError("A (=%s) must be a projective space" % A) Curve_generic.__init__(self, A, X, category=category) @@ -419,7 +419,7 @@ def projection(self, P=None, PS=None): if self.base_ring() not in Fields(): raise TypeError("this curve must be defined over a field") if PS is not None: - if not is_ProjectiveSpace(PS): + if not isinstance(PS, ProjectiveSpace_ring): raise TypeError("(=%s) must be a projective space" % PS) if PS.dimension_relative() != n - 1: raise TypeError("(=%s) must have dimension (=%s)" % (PS, n - 1)) @@ -621,7 +621,7 @@ def __init__(self, A, f, category=None): sage: loads(dumps(C)) == C True """ - if not (is_ProjectiveSpace(A) and A.dimension != 2): + if not (isinstance(A, ProjectiveSpace_ring) and A.dimension != 2): raise TypeError("the ambient space is not a projective plane") super().__init__(A, [f], category=category) diff --git a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py index 3dc8ea0f11e..c3cdd991e58 100644 --- a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py +++ b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py @@ -94,7 +94,7 @@ from sage.rings.fraction_field import FractionField from sage.schemes.elliptic_curves.constructor import EllipticCurve -from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve +from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic from sage.schemes.elliptic_curves.weierstrass_morphism \ import WeierstrassIsomorphism, _isomorphisms, baseWI, negation_morphism @@ -1042,7 +1042,7 @@ def __init__(self, E, kernel, codomain=None, degree=None, model=None, check=True to Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 5252*x - 178837 over Rational Field """ - if not is_EllipticCurve(E): + if not isinstance(E, EllipticCurve_generic): raise ValueError("given E is not an elliptic curve") if not isinstance(kernel, list) and kernel in E: @@ -1854,7 +1854,7 @@ def __setup_post_isomorphism(self, codomain, model): codomain = compute_model(oldE2, model) else: # codomain is not None - if not is_EllipticCurve(codomain): + if not isinstance(codomain, EllipticCurve_generic): raise ValueError("given codomain is not an elliptic curve") if not oldE2.is_isomorphic(codomain): diff --git a/src/sage/schemes/elliptic_curves/ell_field.py b/src/sage/schemes/elliptic_curves/ell_field.py index 3efa79ff759..237c838b3d4 100644 --- a/src/sage/schemes/elliptic_curves/ell_field.py +++ b/src/sage/schemes/elliptic_curves/ell_field.py @@ -444,10 +444,10 @@ def is_quadratic_twist(self, other): sage: E1.is_isomorphic(E2) True """ - from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve + from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic E = self F = other - if not is_EllipticCurve(E) or not is_EllipticCurve(F): + if not isinstance(E, EllipticCurve_generic) or not isinstance(F, EllipticCurve_generic): raise ValueError("arguments are not elliptic curves") K = E.base_ring() zero = K.zero() @@ -543,10 +543,10 @@ def is_quartic_twist(self, other): sage: (D/12345).is_perfect_power(4) True """ - from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve + from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic E = self F = other - if not is_EllipticCurve(E) or not is_EllipticCurve(F): + if not isinstance(E, EllipticCurve_generic) or not isinstance(F, EllipticCurve_generic): raise ValueError("arguments are not elliptic curves") K = E.base_ring() zero = K.zero() @@ -612,10 +612,10 @@ def is_sextic_twist(self, other): sage: (D/12345).is_perfect_power(6) True """ - from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve + from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic E = self F = other - if not is_EllipticCurve(E) or not is_EllipticCurve(F): + if not isinstance(E, EllipticCurve_generic) or not isinstance(F, EllipticCurve_generic): raise ValueError("arguments are not elliptic curves") K = E.base_ring() zero = K.zero() @@ -2065,8 +2065,8 @@ def is_isogenous(self, other, field=None): ... NotImplementedError: Only implemented for isomorphic curves over general fields. """ - from .ell_generic import is_EllipticCurve - if not is_EllipticCurve(other): + from .ell_generic import EllipticCurve_generic + if not isinstance(other, EllipticCurve_generic): raise ValueError("Second argument is not an Elliptic Curve.") if self.is_isomorphic(other): return True diff --git a/src/sage/schemes/elliptic_curves/ell_finite_field.py b/src/sage/schemes/elliptic_curves/ell_finite_field.py index f67e15b5627..5ffd2dc6c0e 100644 --- a/src/sage/schemes/elliptic_curves/ell_finite_field.py +++ b/src/sage/schemes/elliptic_curves/ell_finite_field.py @@ -1252,8 +1252,8 @@ def is_isogenous(self, other, field=None, proof=True): sage: E1.is_isogenous(E7,GF(13^30,'j')) False """ - from .ell_generic import is_EllipticCurve - if not is_EllipticCurve(other): + from .ell_generic import EllipticCurve_generic + if not isinstance(other, EllipticCurve_generic): raise ValueError("Second argument is not an Elliptic Curve.") if self.is_isomorphic(other): return True diff --git a/src/sage/schemes/elliptic_curves/ell_generic.py b/src/sage/schemes/elliptic_curves/ell_generic.py index 4719b914bde..2e950ae3bc9 100644 --- a/src/sage/schemes/elliptic_curves/ell_generic.py +++ b/src/sage/schemes/elliptic_curves/ell_generic.py @@ -98,10 +98,15 @@ def is_EllipticCurve(x): sage: from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve sage: E = EllipticCurve([1,2,3/4,7,19]) sage: is_EllipticCurve(E) + doctest:warning... + DeprecationWarning: The function is_EllipticCurve is deprecated; use 'isinstance(..., EllipticCurve_generic)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True sage: is_EllipticCurve(0) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_EllipticCurve is deprecated; use 'isinstance(..., EllipticCurve_generic)' instead.") return isinstance(x, EllipticCurve_generic) @@ -2908,7 +2913,7 @@ def is_isomorphic(self, other, field=None): sage: E.is_isomorphic(F.change_ring(CC)) False """ - if not is_EllipticCurve(other): + if not isinstance(other, EllipticCurve_generic): return False if field is None: if self.base_ring() != other.base_ring(): diff --git a/src/sage/schemes/elliptic_curves/ell_number_field.py b/src/sage/schemes/elliptic_curves/ell_number_field.py index b0c07df78b6..298cf9277d7 100644 --- a/src/sage/schemes/elliptic_curves/ell_number_field.py +++ b/src/sage/schemes/elliptic_curves/ell_number_field.py @@ -92,7 +92,7 @@ import sage.rings.abc from .ell_field import EllipticCurve_field -from .ell_generic import is_EllipticCurve +from .ell_generic import EllipticCurve_generic from .ell_point import EllipticCurvePoint_number_field from .constructor import EllipticCurve from sage.rings.integer_ring import ZZ @@ -3176,7 +3176,7 @@ def is_isogenous(self, other, proof=True, maxnorm=100): sage: EK.is_isogenous(EcK) # long time (about 3.5 s) True """ - if not is_EllipticCurve(other): + if not isinstance(other, EllipticCurve_generic): raise ValueError("Second argument is not an Elliptic Curve.") if self.is_isomorphic(other): return True diff --git a/src/sage/schemes/elliptic_curves/ell_rational_field.py b/src/sage/schemes/elliptic_curves/ell_rational_field.py index ce77cdca614..44e26cb6f1f 100644 --- a/src/sage/schemes/elliptic_curves/ell_rational_field.py +++ b/src/sage/schemes/elliptic_curves/ell_rational_field.py @@ -52,7 +52,7 @@ from . import constructor from . import BSD -from .ell_generic import is_EllipticCurve +from .ell_generic import EllipticCurve_generic from . import ell_modular_symbols from .ell_number_field import EllipticCurve_number_field from . import ell_point @@ -4985,7 +4985,7 @@ def is_isogenous(self, other, proof=True, maxp=200): sage: E.is_isogenous(EE) False """ - if not is_EllipticCurve(other): + if not isinstance(other, EllipticCurve_generic): raise ValueError("Second argument is not an Elliptic Curve.") if other.base_field() is not QQ: raise ValueError("If first argument is an elliptic curve over QQ then the second argument must be also.") diff --git a/src/sage/schemes/elliptic_curves/heegner.py b/src/sage/schemes/elliptic_curves/heegner.py index f0ad1420bcf..868f28d025d 100644 --- a/src/sage/schemes/elliptic_curves/heegner.py +++ b/src/sage/schemes/elliptic_curves/heegner.py @@ -5762,8 +5762,8 @@ def kolyvagin_reduction_data(E, q, first_only=True): sage: kolyvagin_reduction_data(EllipticCurve('2350g1'), 5, first_only=False) (19, 239, -311, 19, 6480, 85680) """ - from .ell_generic import is_EllipticCurve - if not is_EllipticCurve(E): + from .ell_generic import EllipticCurve_generic + if not isinstance(E, EllipticCurve_generic): raise TypeError("E must be an elliptic curve") q = ZZ(q) diff --git a/src/sage/schemes/elliptic_curves/height.py b/src/sage/schemes/elliptic_curves/height.py index 7ddd080d5b1..920cf47b676 100644 --- a/src/sage/schemes/elliptic_curves/height.py +++ b/src/sage/schemes/elliptic_curves/height.py @@ -805,8 +805,8 @@ def __init__(self, E): ValueError: EllipticCurveCanonicalHeight class can only be created from an elliptic curve defined over a number field """ - from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve - if is_EllipticCurve(E): + from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic + if isinstance(E, EllipticCurve_generic): self.E = E from sage.rings.number_field.number_field_base import NumberField K = E.base_ring() diff --git a/src/sage/schemes/elliptic_curves/jacobian.py b/src/sage/schemes/elliptic_curves/jacobian.py index fcd941b4276..9099a803afc 100644 --- a/src/sage/schemes/elliptic_curves/jacobian.py +++ b/src/sage/schemes/elliptic_curves/jacobian.py @@ -111,8 +111,8 @@ def Jacobian(X, **kwds): else: return Jacobian_of_equation(X, **kwds) - from sage.schemes.generic.scheme import is_Scheme - if is_Scheme(X) and X.dimension() == 1: + from sage.schemes.generic.scheme import Scheme + if isinstance(X, Scheme) and X.dimension() == 1: return Jacobian_of_curve(X, morphism=morphism, **kwds) diff --git a/src/sage/schemes/elliptic_curves/weierstrass_morphism.py b/src/sage/schemes/elliptic_curves/weierstrass_morphism.py index 878b5a78d82..30a2e4bd538 100644 --- a/src/sage/schemes/elliptic_curves/weierstrass_morphism.py +++ b/src/sage/schemes/elliptic_curves/weierstrass_morphism.py @@ -295,8 +295,8 @@ def _isomorphisms(E, F): sage: all({iso2*iso1 for iso1 in Iso} == set(Aut) for iso2 in F.isomorphisms(E)) True """ - from .ell_generic import is_EllipticCurve - if not is_EllipticCurve(E) or not is_EllipticCurve(F): + from .ell_generic import EllipticCurve_generic + if not isinstance(E, EllipticCurve_generic) or not isinstance(F, EllipticCurve_generic): raise ValueError("arguments are not elliptic curves") j = E.j_invariant() @@ -459,13 +459,13 @@ def __init__(self, E=None, urst=None, F=None): sage: type(iso.degree()) # needs sage.rings.finite_rings """ - from .ell_generic import is_EllipticCurve + from .ell_generic import EllipticCurve_generic if E is not None: - if not is_EllipticCurve(E): + if not isinstance(E, EllipticCurve_generic): raise ValueError("first argument must be an elliptic curve or None") if F is not None: - if not is_EllipticCurve(F): + if not isinstance(F, EllipticCurve_generic): raise ValueError("third argument must be an elliptic curve or None") if urst is not None: if len(urst) != 4: diff --git a/src/sage/schemes/generic/algebraic_scheme.py b/src/sage/schemes/generic/algebraic_scheme.py index 172256fa6a1..badd0531533 100644 --- a/src/sage/schemes/generic/algebraic_scheme.py +++ b/src/sage/schemes/generic/algebraic_scheme.py @@ -159,6 +159,9 @@ def is_AlgebraicScheme(x): x^2 + y^2 sage: from sage.schemes.generic.algebraic_scheme import is_AlgebraicScheme sage: is_AlgebraicScheme(V) + doctest:warning... + DeprecationWarning: The function is_AlgebraicScheme is deprecated; use 'isinstance(..., AlgebraicScheme)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True Affine space is itself not an algebraic scheme, though the closed @@ -190,6 +193,8 @@ def is_AlgebraicScheme(x): sage: is_AlgebraicScheme(S) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_AlgebraicScheme is deprecated; use 'isinstance(..., AlgebraicScheme)' instead.") return isinstance(x, AlgebraicScheme) @@ -227,7 +232,7 @@ def __init__(self, A, category=None): sage: S.category() Category of schemes over Integer Ring """ - if not ambient_space.is_AmbientSpace(A): + if not isinstance(A, ambient_space.AmbientSpace): raise TypeError("A (=%s) must be an ambient space") self.__A = A self.__divisor_group = {} @@ -675,7 +680,7 @@ def _latex_(self): X \\text{ is defined by }\\text{no polynomials},\\text{ and } Y \\text{ is defined by } x - y.' """ - if sage.schemes.affine.affine_space.is_AffineSpace(self.ambient_space()): + if isinstance(self.ambient_space(), sage.schemes.affine.affine_space.AffineSpace_generic): t = "affine" else: t = "projective" @@ -709,7 +714,7 @@ def _repr_(self): sage: U._repr_() 'Quasi-projective subscheme X - Y of Projective Space of dimension 2 over Integer Ring, where X is defined by:\n (no polynomials)\nand Y is defined by:\n x - y' """ - if sage.schemes.affine.affine_space.is_AffineSpace(self.ambient_space()): + if isinstance(self.ambient_space(), sage.schemes.affine.affine_space.AffineSpace_generic): t = "affine" else: t = "projective" diff --git a/src/sage/schemes/generic/ambient_space.py b/src/sage/schemes/generic/ambient_space.py index 52b3f1e0e39..6706e6adde8 100644 --- a/src/sage/schemes/generic/ambient_space.py +++ b/src/sage/schemes/generic/ambient_space.py @@ -25,6 +25,9 @@ def is_AmbientSpace(x): sage: from sage.schemes.generic.ambient_space import is_AmbientSpace sage: is_AmbientSpace(ProjectiveSpace(3, ZZ)) + doctest:warning... + DeprecationWarning: The function is_AmbientSpace is deprecated; use 'isinstance(..., AmbientSpace)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True sage: is_AmbientSpace(AffineSpace(2, QQ)) True @@ -32,8 +35,11 @@ def is_AmbientSpace(x): sage: is_AmbientSpace(P.subscheme([x + y + z])) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_AmbientSpace is deprecated; use 'isinstance(..., AmbientSpace)' instead.") return isinstance(x, AmbientSpace) + class AmbientSpace(Scheme): """ Base class for ambient spaces over a ring. diff --git a/src/sage/schemes/generic/divisor.py b/src/sage/schemes/generic/divisor.py index c6d99b12204..8b41d473487 100644 --- a/src/sage/schemes/generic/divisor.py +++ b/src/sage/schemes/generic/divisor.py @@ -48,8 +48,8 @@ from sage.structure.formal_sum import FormalSum from .morphism import is_SchemeMorphism -from sage.schemes.affine.affine_space import is_AffineSpace -from sage.schemes.projective.projective_space import is_ProjectiveSpace +from sage.schemes.affine.affine_space import AffineSpace_generic +from sage.schemes.projective.projective_space import ProjectiveSpace_ring def CurvePointToIdeal(C,P): @@ -72,7 +72,7 @@ def CurvePointToIdeal(C,P): m = n-1 while m > 0 and P[m] == 0: m += -1 - if is_ProjectiveSpace(A): + if isinstance(A, ProjectiveSpace_ring): a_m = P[m] x_m = x[m] for i in range(m): @@ -81,7 +81,7 @@ def CurvePointToIdeal(C,P): polys.append(x[i]) else: polys.append(a_m*x[i]-ai*x_m) - elif is_AffineSpace(A): + elif isinstance(A, AffineSpace_generic): for i in range(m+1): ai = P[i] if ai == 0: diff --git a/src/sage/schemes/generic/divisor_group.py b/src/sage/schemes/generic/divisor_group.py index 5dfd66a1bb9..a0890cd717a 100644 --- a/src/sage/schemes/generic/divisor_group.py +++ b/src/sage/schemes/generic/divisor_group.py @@ -75,10 +75,15 @@ def is_DivisorGroup(x): sage: from sage.schemes.generic.divisor_group import is_DivisorGroup, DivisorGroup sage: Div = DivisorGroup(Spec(ZZ), base_ring=QQ) sage: is_DivisorGroup(Div) + doctest:warning... + DeprecationWarning: The function is_DivisorGroup is deprecated; use 'isinstance(..., DivisorGroup_generic)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True sage: is_DivisorGroup('not a divisor') False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_DivisorGroup is deprecated; use 'isinstance(..., DivisorGroup_generic)' instead.") return isinstance(x, DivisorGroup_generic) diff --git a/src/sage/schemes/generic/homset.py b/src/sage/schemes/generic/homset.py index 6fca9c1e257..20d1398dcb7 100644 --- a/src/sage/schemes/generic/homset.py +++ b/src/sage/schemes/generic/homset.py @@ -67,12 +67,17 @@ def is_SchemeHomset(H): Defn: Identity map sage: from sage.schemes.generic.homset import is_SchemeHomset sage: is_SchemeHomset(f) + doctest:warning... + DeprecationWarning: The function is_SchemeHomset is deprecated; use 'isinstance(..., SchemeHomset_generic)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. False sage: is_SchemeHomset(f.parent()) True sage: is_SchemeHomset('a string') False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_SchemeHomset is deprecated; use 'isinstance(..., SchemeHomset_generic)' instead.") return isinstance(H, SchemeHomset_generic) @@ -164,7 +169,7 @@ def create_key_and_extra_args(self, X, Y, category=None, base=None, if base is None: from sage.structure.element import coercion_model base = coercion_model.common_parent(X.base_ring(), Y.base_ring()) - if is_AffineScheme(base): + if isinstance(base, AffineScheme): base_spec = base base_ring = base.coordinate_ring() elif base in _CommRings: @@ -327,7 +332,7 @@ def natural_map(self): """ X = self.domain() Y = self.codomain() - if is_AffineScheme(Y) and Y.coordinate_ring() == X.base_ring(): + if isinstance(Y, AffineScheme) and Y.coordinate_ring() == X.base_ring(): return SchemeMorphism_structure_map(self) raise NotImplementedError @@ -444,7 +449,7 @@ def __init__(self, X, Y, category=None, check=True, base=ZZ): sage: SchemeHomset_points(Spec(QQ), AffineSpace(ZZ,2)) Set of rational points of Affine Space of dimension 2 over Rational Field """ - if check and not is_AffineScheme(X): + if check and not isinstance(X, AffineScheme): raise ValueError('The domain must be an affine scheme.') SchemeHomset_generic.__init__(self, X, Y, category=category, check=check, base=base) @@ -730,7 +735,7 @@ def value_ring(self): Rational Field """ dom = self.domain() - if not is_AffineScheme(dom): + if not isinstance(dom, AffineScheme): raise ValueError("value rings are defined for affine domains only") return dom.coordinate_ring() diff --git a/src/sage/schemes/generic/hypersurface.py b/src/sage/schemes/generic/hypersurface.py index f4991527c78..4d39a7bfc27 100644 --- a/src/sage/schemes/generic/hypersurface.py +++ b/src/sage/schemes/generic/hypersurface.py @@ -34,6 +34,9 @@ def is_Hypersurface(self): sage: R. = ZZ[] sage: H = ProjectiveHypersurface(x*z + y^2) sage: is_Hypersurface(H) + doctest:warning... + DeprecationWarning: The function is_Hypersurface is deprecated; use 'isinstance(..., (ProjectiveHypersurface, AffineHypersurface))' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True :: @@ -48,8 +51,11 @@ def is_Hypersurface(self): sage: is_Hypersurface(H) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_Hypersurface is deprecated; use 'isinstance(..., (ProjectiveHypersurface, AffineHypersurface))' instead.") return isinstance(self, (ProjectiveHypersurface, AffineHypersurface)) + class ProjectiveHypersurface(AlgebraicScheme_subscheme_projective): """ The projective hypersurface defined by the given polynomial. diff --git a/src/sage/schemes/generic/scheme.py b/src/sage/schemes/generic/scheme.py index 2c0e3100c86..7d190275e8e 100644 --- a/src/sage/schemes/generic/scheme.py +++ b/src/sage/schemes/generic/scheme.py @@ -44,11 +44,16 @@ def is_Scheme(x): sage: from sage.schemes.generic.scheme import is_Scheme sage: is_Scheme(5) + doctest:warning... + DeprecationWarning: The function is_Scheme is deprecated; use 'isinstance(..., Scheme)' or categories instead. + See https://github.com/sagemath/sage/issues/38022 for details. False sage: X = Spec(QQ) sage: is_Scheme(X) True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_Scheme is deprecated; use 'isinstance(..., Scheme)' or categories instead.") return isinstance(x, Scheme) @@ -105,7 +110,7 @@ def __init__(self, X=None, category=None): if X is None: self._base_ring = ZZ - elif is_Scheme(X): + elif isinstance(X, Scheme): self._base_scheme = X elif is_SchemeMorphism(X): self._base_morphism = X @@ -255,7 +260,7 @@ def __call__(self, *args): S = args[0] if S in CommutativeRings(): return self.point_homset(S) - elif is_Scheme(S): + elif isinstance(S, Scheme): return S.Hom(self) elif isinstance(S, (list, tuple)): args = S @@ -331,8 +336,8 @@ def point(self, v, check=True): (0 : 0 : 1) """ # todo: update elliptic curve stuff to take point_homset as argument - from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve - if is_EllipticCurve(self): + from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic + if isinstance(self, EllipticCurve_generic): try: return self._point(self.point_homset(), v, check=check) except AttributeError: # legacy code without point_homset @@ -607,7 +612,7 @@ def hom(self, x, Y=None, check=True): Defn: Structure map """ if Y is None: - if is_Scheme(x): + if isinstance(x, Scheme): return self.Hom(x).natural_map() else: raise TypeError("unable to determine codomain") @@ -794,13 +799,19 @@ def is_AffineScheme(x): sage: from sage.schemes.generic.scheme import is_AffineScheme sage: is_AffineScheme(5) + doctest:warning... + DeprecationWarning: The function is_AffineScheme is deprecated; use 'isinstance(..., AffineScheme)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. False sage: E = Spec(QQ) sage: is_AffineScheme(E) True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_AffineScheme is deprecated; use 'isinstance(..., AffineScheme)' instead.") return isinstance(x, AffineScheme) + class AffineScheme(UniqueRepresentation, Scheme): """ Class for general affine schemes. @@ -1212,7 +1223,7 @@ def hom(self, x, Y=None): from sage.categories.map import Map from sage.categories.rings import Rings - if is_Scheme(x): + if isinstance(x, Scheme): return self.Hom(x).natural_map() if Y is None and isinstance(x, Map) and x.category_for().is_subcategory(Rings()): # x is a morphism of Rings diff --git a/src/sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py b/src/sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py index c18732064d4..4834152b606 100644 --- a/src/sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +++ b/src/sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py @@ -51,8 +51,13 @@ def is_HyperellipticCurve(C): sage: R. = QQ[]; C = HyperellipticCurve(x^3 + x - 1); C Hyperelliptic Curve over Rational Field defined by y^2 = x^3 + x - 1 sage: is_HyperellipticCurve(C) + doctest:warning... + DeprecationWarning: The function is_HyperellipticCurve is deprecated; use 'isinstance(..., HyperellipticCurve_generic)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_HyperellipticCurve is deprecated; use 'isinstance(..., HyperellipticCurve_generic)' instead.") return isinstance(C, HyperellipticCurve_generic) diff --git a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py index a5f4f63876c..88b28a4b753 100644 --- a/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py +++ b/src/sage/schemes/hyperelliptic_curves/jacobian_homset.py @@ -161,9 +161,9 @@ def value_ring(self): """ Return S for a homset X(T) where T = Spec(S). """ - from sage.schemes.generic.scheme import is_AffineScheme + from sage.schemes.generic.scheme import AffineScheme T = self.domain() - if is_AffineScheme(T): + if isinstance(T, AffineScheme): return T.coordinate_ring() else: raise TypeError("domain of argument must be of the form Spec(S)") diff --git a/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py b/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py index 03b795a4704..753f83f8b23 100644 --- a/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +++ b/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py @@ -74,9 +74,9 @@ from sage.rings.padics.factory import Qp as pAdicField from sage.rings.polynomial.polynomial_element import Polynomial from sage.schemes.elliptic_curves.constructor import EllipticCurve -from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve +from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic from sage.schemes.hyperelliptic_curves.constructor import HyperellipticCurve -from sage.schemes.hyperelliptic_curves.hyperelliptic_generic import is_HyperellipticCurve +from sage.schemes.hyperelliptic_curves.hyperelliptic_generic import HyperellipticCurve_generic from sage.structure.element import ModuleElement from sage.structure.parent import Parent from sage.structure.richcmp import richcmp @@ -2391,14 +2391,14 @@ def __init__(self, Q, R=None, invert_y=True): R = Q.base_ring() x = PolynomialRing(R, 'xx').gen() - if is_EllipticCurve(Q): + if isinstance(Q, EllipticCurve_generic): E = Q if E.a1() != 0 or E.a2() != 0: raise NotImplementedError("curve must be in Weierstrass normal form") Q = -E.change_ring(R).defining_polynomial()(x, 0, 1) self._curve = E - elif is_HyperellipticCurve(Q): + elif isinstance(Q, HyperellipticCurve_generic): C = Q if C.hyperelliptic_polynomials()[1] != 0: raise NotImplementedError("curve must be of form y^2 = Q(x)") diff --git a/src/sage/schemes/jacobians/abstract_jacobian.py b/src/sage/schemes/jacobians/abstract_jacobian.py index 570c5efaa76..bed9555da46 100644 --- a/src/sage/schemes/jacobians/abstract_jacobian.py +++ b/src/sage/schemes/jacobians/abstract_jacobian.py @@ -133,7 +133,7 @@ def __init__(self, C, category=None): TypeError: C (=Projective Plane Curve over Ring of integers modulo 6 defined by x + y + z) must be defined over a field. """ - if not is_Scheme(C): + if not isinstance(C, Scheme): raise TypeError("Argument (=%s) must be a scheme." % C) if C.base_ring() not in _Fields: raise TypeError("C (=%s) must be defined over a field." % C) diff --git a/src/sage/schemes/plane_quartics/quartic_constructor.py b/src/sage/schemes/plane_quartics/quartic_constructor.py index 37c06a1f5c9..fede02c20bd 100644 --- a/src/sage/schemes/plane_quartics/quartic_constructor.py +++ b/src/sage/schemes/plane_quartics/quartic_constructor.py @@ -8,7 +8,7 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.schemes.projective.projective_space import is_ProjectiveSpace, ProjectiveSpace +from sage.schemes.projective.projective_space import ProjectiveSpace_ring, ProjectiveSpace from sage.rings.polynomial.multi_polynomial import MPolynomial from .quartic_generic import QuarticCurve_generic @@ -59,7 +59,7 @@ def QuarticCurve(F, PP=None, check=False): raise ValueError("Argument F (=%s) must be a homogeneous polynomial of degree 4" % F) if PP is not None: - if not is_ProjectiveSpace(PP) and PP.dimension == 2: + if not isinstance(PP, ProjectiveSpace_ring) and PP.dimension == 2: raise ValueError(f"Argument PP (={PP}) must be a projective plane") else: PP = ProjectiveSpace(P) diff --git a/src/sage/schemes/plane_quartics/quartic_generic.py b/src/sage/schemes/plane_quartics/quartic_generic.py index ac2cdd84d82..324ec2f9b13 100644 --- a/src/sage/schemes/plane_quartics/quartic_generic.py +++ b/src/sage/schemes/plane_quartics/quartic_generic.py @@ -31,11 +31,17 @@ def is_QuarticCurve(C): sage: x,y,z = PolynomialRing(QQ, ['x','y','z']).gens() sage: Q = QuarticCurve(x**4 + y**4 + z**4) sage: is_QuarticCurve(Q) + doctest:warning... + DeprecationWarning: The function is_QuarticCurve is deprecated; use 'isinstance(..., QuarticCurve_generic)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_QuarticCurve is deprecated; use 'isinstance(..., QuarticCurve_generic)' instead.") return isinstance(C, QuarticCurve_generic) + class QuarticCurve_generic(projective_curve.ProjectivePlaneCurve): # DRK: Note that we should check whether the curve is diff --git a/src/sage/schemes/product_projective/homset.py b/src/sage/schemes/product_projective/homset.py index b0b8655a0ec..32ccb977093 100644 --- a/src/sage/schemes/product_projective/homset.py +++ b/src/sage/schemes/product_projective/homset.py @@ -182,8 +182,8 @@ def points(self, **kwds): B = kwds.pop('bound', 0) X = self.codomain() - from sage.schemes.product_projective.space import is_ProductProjectiveSpaces - if not is_ProductProjectiveSpaces(X) and X.base_ring() in Fields(): + from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring + if not isinstance(X, ProductProjectiveSpaces_ring) and X.base_ring() in Fields(): # no points if X.dimension() == -1: return [] diff --git a/src/sage/schemes/product_projective/morphism.py b/src/sage/schemes/product_projective/morphism.py index d5b1974164b..30874e5530e 100644 --- a/src/sage/schemes/product_projective/morphism.py +++ b/src/sage/schemes/product_projective/morphism.py @@ -112,8 +112,8 @@ def __init__(self, parent, polys, check=True): target = parent.codomain().ambient_space() dom = parent.domain().ambient_space() - from sage.schemes.product_projective.space import is_ProductProjectiveSpaces - if is_ProductProjectiveSpaces(target): + from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring + if isinstance(target, ProductProjectiveSpaces_ring): splitpolys = target._factors(polys) for m in range(len(splitpolys)): d = dom._degree(splitpolys[m][0]) diff --git a/src/sage/schemes/product_projective/point.py b/src/sage/schemes/product_projective/point.py index 6de7cf74d7d..e930a30056b 100644 --- a/src/sage/schemes/product_projective/point.py +++ b/src/sage/schemes/product_projective/point.py @@ -537,8 +537,8 @@ def intersection_multiplicity(self, X): sage: Q.intersection_multiplicity(Y) # needs sage.libs.singular 2 """ - from sage.schemes.product_projective.space import is_ProductProjectiveSpaces - if is_ProductProjectiveSpaces(self.codomain()): + from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring + if isinstance(self.codomain(), ProductProjectiveSpaces_ring): raise TypeError("this point must be a point on a subscheme of a product of projective spaces") return self.codomain().intersection_multiplicity(X, self) @@ -565,8 +565,8 @@ def multiplicity(self): sage: Q3.multiplicity() # needs sage.libs.singular 6 """ - from sage.schemes.product_projective.space import is_ProductProjectiveSpaces - if is_ProductProjectiveSpaces(self.codomain()): + from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring + if isinstance(self.codomain(), ProductProjectiveSpaces_ring): raise TypeError("this point must be a point on a subscheme of a product of projective spaces") return self.codomain().multiplicity(self) diff --git a/src/sage/schemes/product_projective/rational_point.py b/src/sage/schemes/product_projective/rational_point.py index a4488647063..264e2a4c2d9 100644 --- a/src/sage/schemes/product_projective/rational_point.py +++ b/src/sage/schemes/product_projective/rational_point.py @@ -55,8 +55,8 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.schemes.generic.scheme import is_Scheme -from sage.schemes.product_projective.space import is_ProductProjectiveSpaces +from sage.schemes.generic.scheme import Scheme +from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring from sage.misc.lazy_import import lazy_import from sage.misc.mrange import xmrange from sage.misc.misc_c import prod @@ -124,12 +124,12 @@ def enum_product_projective_rational_field(X, B): (0 : 0 : 1 , 0 : 1), (0 : 0 : 1 , 1 : 1), (0 : 1 : 0 , 0 : 1), (0 : 1 : 0 , 1 : 1), (1 : -1/2 : 1 , 0 : 1), (1 : -1/2 : 1 , 1 : 1)] """ - if is_Scheme(X): - if (not is_ProductProjectiveSpaces(X.ambient_space())): + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), ProductProjectiveSpaces_ring): raise TypeError("ambient space must be product of projective space over the rational field") X = X(X.base_ring()) else: - if (not is_ProductProjectiveSpaces(X.codomain().ambient_space())): + if not isinstance(X.codomain().ambient_space(), ProductProjectiveSpaces_ring): raise TypeError("codomain must be product of projective space over the rational field") R = X.codomain().ambient_space() @@ -228,12 +228,12 @@ def enum_product_projective_number_field(X, **kwds): tol = kwds.pop('tolerance', 1e-2) prec = kwds.pop('precision', 53) - if is_Scheme(X): - if (not is_ProductProjectiveSpaces(X.ambient_space())): + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), ProductProjectiveSpaces_ring): raise TypeError("ambient space must be product of projective space over the rational field") X = X(X.base_ring()) else: - if (not is_ProductProjectiveSpaces(X.codomain().ambient_space())): + if not isinstance(X.codomain().ambient_space(), ProductProjectiveSpaces_ring): raise TypeError("codomain must be product of projective space over the rational field") R = X.codomain().ambient_space() @@ -284,12 +284,12 @@ def enum_product_projective_finite_field(X): sage: len(enum_product_projective_finite_field(X)) 36 """ - if is_Scheme(X): - if (not is_ProductProjectiveSpaces(X.ambient_space())): + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), ProductProjectiveSpaces_ring): raise TypeError("ambient space must be product of projective space over the rational field") X = X(X.base_ring()) else: - if (not is_ProductProjectiveSpaces(X.codomain().ambient_space())): + if not isinstance(X.codomain().ambient_space(), ProductProjectiveSpaces_ring): raise TypeError("codomain must be product of projective space over the rational field") R = X.codomain().ambient_space() diff --git a/src/sage/schemes/product_projective/space.py b/src/sage/schemes/product_projective/space.py index 2b4e60905df..ea99ea00559 100644 --- a/src/sage/schemes/product_projective/space.py +++ b/src/sage/schemes/product_projective/space.py @@ -73,10 +73,15 @@ def is_ProductProjectiveSpaces(x): EXAMPLES:: sage: is_ProductProjectiveSpaces(ProjectiveSpace(5, names='x')) + doctest:warning... + DeprecationWarning: The function is_ProductProjectiveSpaces is deprecated; use 'isinstance(..., ProductProjectiveSpaces_ring)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. False sage: is_ProductProjectiveSpaces(ProductProjectiveSpaces([1, 2, 3], ZZ, 'x')) True """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_ProductProjectiveSpaces is deprecated; use 'isinstance(..., ProductProjectiveSpaces_ring)' instead.") return isinstance(x, ProductProjectiveSpaces_ring) diff --git a/src/sage/schemes/projective/projective_homset.py b/src/sage/schemes/projective/projective_homset.py index 91c01a51128..5428a101364 100644 --- a/src/sage/schemes/projective/projective_homset.py +++ b/src/sage/schemes/projective/projective_homset.py @@ -169,9 +169,9 @@ def points(self, **kwds): the numerical fields are inexact;points may be computed partially or incorrectly. 6 """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace + from sage.schemes.projective.projective_space import ProjectiveSpace_ring X = self.codomain() - if not is_ProjectiveSpace(X) and X.base_ring() in Fields(): + if not isinstance(X, ProjectiveSpace_ring) and X.base_ring() in Fields(): if hasattr(X.base_ring(), 'precision'): numerical = True verbose("Warning: computations in the numerical fields are inexact;points may be computed partially or incorrectly.", level=0) @@ -377,7 +377,7 @@ def numerical_points(self, F=None, **kwds): ... TypeError: F must be a numerical field """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace + from sage.schemes.projective.projective_space import ProjectiveSpace_ring if F is None: F = CC if F not in Fields() or not hasattr(F, 'precision'): @@ -387,7 +387,7 @@ def numerical_points(self, F=None, **kwds): raise TypeError('base ring must be a number field') PP = X.ambient_space().change_ring(F) - if not is_ProjectiveSpace(X) and X.base_ring() in Fields(): + if not isinstance(X, ProjectiveSpace_ring) and X.base_ring() in Fields(): #Then it must be a subscheme dim_ideal = X.defining_ideal().dimension() if dim_ideal < 1: # no points diff --git a/src/sage/schemes/projective/projective_morphism.py b/src/sage/schemes/projective/projective_morphism.py index a284ecbc585..a21c3f48e17 100644 --- a/src/sage/schemes/projective/projective_morphism.py +++ b/src/sage/schemes/projective/projective_morphism.py @@ -1555,8 +1555,8 @@ def wronskian_ideal(self): from sage.calculus.functions import jacobian dom = self.domain() - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if not (is_ProjectiveSpace(dom) and is_ProjectiveSpace(self.codomain())): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if not (isinstance(dom, ProjectiveSpace_ring) and isinstance(self.codomain(), ProjectiveSpace_ring)): raise NotImplementedError("not implemented for subschemes") N = dom.dimension_relative() + 1 R = dom.coordinate_ring() @@ -1791,9 +1791,9 @@ def _number_field_from_algebraics(self): ((-0.6823278038280193?)*x^3 + (-13)*y^3 : (-14)*y^3) """ from sage.rings.qqbar import number_field_elements_from_algebraics - from sage.schemes.projective.projective_space import is_ProjectiveSpace + from sage.schemes.projective.projective_space import ProjectiveSpace_ring - if not (is_ProjectiveSpace(self.domain()) and is_ProjectiveSpace(self.domain())): + if not (isinstance(self.domain(), ProjectiveSpace_ring) and isinstance(self.domain(), ProjectiveSpace_ring)): raise NotImplementedError("not implemented for subschemes") K_pre, C, phi = number_field_elements_from_algebraics([c for f in self diff --git a/src/sage/schemes/projective/projective_point.py b/src/sage/schemes/projective/projective_point.py index 2f5576e6a12..6aebc66a5e6 100644 --- a/src/sage/schemes/projective/projective_point.py +++ b/src/sage/schemes/projective/projective_point.py @@ -1269,8 +1269,8 @@ def _number_field_from_algebraics(self): sage: Q[0] == T[0] True """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if not is_ProjectiveSpace(self.codomain()): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if not isinstance(self.codomain(), ProjectiveSpace_ring): raise NotImplementedError("not implemented for subschemes") # Issue #23808: Keep the embedding info associated with the number field K @@ -1368,8 +1368,8 @@ def intersection_multiplicity(self, X): ... TypeError: this point must be a point on a projective subscheme """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if is_ProjectiveSpace(self.codomain()): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if isinstance(self.codomain(), ProjectiveSpace_ring): raise TypeError("this point must be a point on a projective subscheme") return self.codomain().intersection_multiplicity(X, self) @@ -1393,8 +1393,8 @@ def multiplicity(self): sage: Q2.multiplicity() # needs sage.libs.singular 8 """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if is_ProjectiveSpace(self.codomain()): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if isinstance(self.codomain(), ProjectiveSpace_ring): raise TypeError("this point must be a point on a projective subscheme") return self.codomain().multiplicity(self) diff --git a/src/sage/schemes/projective/projective_rational_point.py b/src/sage/schemes/projective/projective_rational_point.py index 8c2fa76599a..1556ab2d856 100644 --- a/src/sage/schemes/projective/projective_rational_point.py +++ b/src/sage/schemes/projective/projective_rational_point.py @@ -63,7 +63,7 @@ from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF from sage.misc.misc_c import prod from sage.misc.mrange import xmrange -from sage.schemes.generic.scheme import is_Scheme +from sage.schemes.generic.scheme import Scheme from sage.parallel.ncpus import ncpus from sage.parallel.use_fork import p_iter_fork from sage.matrix.constructor import matrix @@ -128,12 +128,12 @@ def enum_projective_rational_field(X, B): - John Cremona and Charlie Turner (06-2010) """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if is_Scheme(X): - if not is_ProjectiveSpace(X.ambient_space()): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), ProjectiveSpace_ring): raise TypeError("ambient space must be projective space over the rational field") X = X(X.base_ring()) - elif not is_ProjectiveSpace(X.codomain().ambient_space()): + elif not isinstance(X.codomain().ambient_space(), ProjectiveSpace_ring): raise TypeError("codomain must be projective space over the rational field") n = X.codomain().ambient_space().ngens() @@ -206,13 +206,13 @@ def enum_projective_number_field(X, **kwds): B = kwds.pop('bound') tol = kwds.pop('tolerance', 1e-2) prec = kwds.pop('precision', 53) - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if is_Scheme(X): - if (not is_ProjectiveSpace(X.ambient_space())): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), ProjectiveSpace_ring): raise TypeError("ambient space must be projective space over a number field") X = X(X.base_ring()) else: - if (not is_ProjectiveSpace(X.codomain().ambient_space())): + if not isinstance(X.codomain().ambient_space(), ProjectiveSpace_ring): raise TypeError("codomain must be projective space over a number field") R = X.codomain().ambient_space() @@ -287,12 +287,12 @@ def enum_projective_finite_field(X): - John Cremona and Charlie Turner (06-2010). """ - from sage.schemes.projective.projective_space import is_ProjectiveSpace - if is_Scheme(X): - if not is_ProjectiveSpace(X.ambient_space()): + from sage.schemes.projective.projective_space import ProjectiveSpace_ring + if isinstance(X, Scheme): + if not isinstance(X.ambient_space(), ProjectiveSpace_ring): raise TypeError("ambient space must be projective space over a finite") X = X(X.base_ring()) - elif not is_ProjectiveSpace(X.codomain().ambient_space()): + elif not isinstance(X.codomain().ambient_space(), ProjectiveSpace_ring): raise TypeError("codomain must be projective space over a finite field") n = X.codomain().ambient_space().ngens() - 1 diff --git a/src/sage/schemes/projective/projective_space.py b/src/sage/schemes/projective/projective_space.py index 5c55a62106e..67ddd800ecc 100644 --- a/src/sage/schemes/projective/projective_space.py +++ b/src/sage/schemes/projective/projective_space.py @@ -140,12 +140,17 @@ def is_ProjectiveSpace(x): sage: from sage.schemes.projective.projective_space import is_ProjectiveSpace sage: is_ProjectiveSpace(ProjectiveSpace(5, names='x')) + doctest:warning... + DeprecationWarning: The function is_ProjectiveSpace is deprecated; use 'isinstance(..., ProjectiveSpace_ring)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True sage: is_ProjectiveSpace(ProjectiveSpace(5, GF(9, 'alpha'), names='x')) # needs sage.rings.finite_rings True sage: is_ProjectiveSpace(Spec(ZZ)) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_ProjectiveSpace is deprecated; use 'isinstance(..., ProjectiveSpace_ring)' instead.") return isinstance(x, ProjectiveSpace_ring) @@ -1539,7 +1544,7 @@ def veronese_embedding(self, d, CS=None, order='lex'): if CS is None: CS = ProjectiveSpace(self.base_ring(), binomial(N + d, d) - 1) else: - if not is_ProjectiveSpace(CS): + if not isinstance(CS, ProjectiveSpace_ring): raise TypeError("(=%s) must be a projective space" % CS) if CS.dimension() != binomial(N + d, d) - 1: raise TypeError("(=%s) has the wrong dimension to serve as the codomain space" % CS) diff --git a/src/sage/schemes/projective/projective_subscheme.py b/src/sage/schemes/projective/projective_subscheme.py index 3ea963e0e04..b4210db1f21 100644 --- a/src/sage/schemes/projective/projective_subscheme.py +++ b/src/sage/schemes/projective/projective_subscheme.py @@ -115,8 +115,8 @@ def point(self, v, check=True): raise ValueError("%s not well defined in dimension > 1" % v) v = [1, 0] # todo: update elliptic curve stuff to take point_homset as argument - from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve - if is_EllipticCurve(self): + from sage.schemes.elliptic_curves.ell_generic import EllipticCurve_generic + if isinstance(self, EllipticCurve_generic): try: return self._point(self.point_homset(), v, check=check) except AttributeError: # legacy code without point_homset diff --git a/src/sage/schemes/toric/chow_group.py b/src/sage/schemes/toric/chow_group.py index 482bd5ce81b..d11d70e135b 100644 --- a/src/sage/schemes/toric/chow_group.py +++ b/src/sage/schemes/toric/chow_group.py @@ -131,7 +131,7 @@ from sage.rings.infinity import Infinity import sage.geometry.abc -from sage.schemes.toric.variety import is_ToricVariety +from sage.schemes.toric.variety import ToricVariety_field from sage.schemes.toric.divisor import is_ToricDivisor @@ -548,7 +548,7 @@ def create_key_and_extra_args(self, toric_variety, base_ring=ZZ, check=True): sage: ChowGroup(P2, ZZ, check=True) == ChowGroup(P2, ZZ, check=False) # indirect doctest True """ - if not is_ToricVariety(toric_variety): + if not isinstance(toric_variety, ToricVariety_field): raise ValueError('first argument must be a toric variety') if base_ring not in [ZZ, QQ]: @@ -608,7 +608,7 @@ def __init__(self, toric_variety, base_ring, check): sage: P2 = toric_varieties.P2() sage: A = ChowGroup_class(P2,ZZ,True); A Chow group of 2-d CPR-Fano toric variety covered by 3 affine patches - sage: is_ChowGroup(A) + sage: isinstance(A, ChowGroup_class) True sage: is_ChowCycle(A.an_element()) True @@ -1216,10 +1216,15 @@ def is_ChowGroup(x) -> bool: sage: A = P2.Chow_group() sage: from sage.schemes.toric.chow_group import is_ChowGroup sage: is_ChowGroup(A) + doctest:warning... + DeprecationWarning: The function is_ChowGroup is deprecated; use 'isinstance(..., ChowGroup_class)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. True sage: is_ChowGroup('Victoria') False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_ChowGroup is deprecated; use 'isinstance(..., ChowGroup_class)' instead.") return isinstance(x, ChowGroup_class) diff --git a/src/sage/schemes/toric/divisor.py b/src/sage/schemes/toric/divisor.py index a80d9a41b85..3ec4b2adb62 100644 --- a/src/sage/schemes/toric/divisor.py +++ b/src/sage/schemes/toric/divisor.py @@ -185,7 +185,7 @@ from sage.schemes.generic.divisor import Divisor_generic from sage.schemes.generic.divisor_group import DivisorGroup_generic from sage.schemes.toric.divisor_class import ToricRationalDivisorClass -from sage.schemes.toric.variety import CohomologyRing, is_ToricVariety +from sage.schemes.toric.variety import CohomologyRing, ToricVariety_field from sage.structure.unique_representation import UniqueRepresentation from sage.structure.element import is_Vector @@ -302,7 +302,7 @@ def ToricDivisor(toric_variety, arg=None, ring=None, check=True, reduce=True): ... TypeError: cannot deduce coefficient ring for [(u, u)] """ - assert is_ToricVariety(toric_variety) + assert isinstance(toric_variety, ToricVariety_field) # First convert special arguments into lists # of multiplicities or (multiplicity,coordinate) @@ -1687,7 +1687,7 @@ def __init__(self, toric_variety, base_ring): sage: DivisorGroup(P2, ZZ) is ToricDivisorGroup(P2, ZZ) False """ - assert is_ToricVariety(toric_variety), str(toric_variety) + ' is not a toric variety!' + assert isinstance(toric_variety, ToricVariety_field), str(toric_variety) + ' is not a toric variety!' super().__init__(toric_variety, base_ring) def _latex_(self): diff --git a/src/sage/schemes/toric/fano_variety.py b/src/sage/schemes/toric/fano_variety.py index d6cbe751274..09014ce20cc 100644 --- a/src/sage/schemes/toric/fano_variety.py +++ b/src/sage/schemes/toric/fano_variety.py @@ -170,6 +170,9 @@ def is_CPRFanoToricVariety(x): sage: from sage.schemes.toric.fano_variety import is_CPRFanoToricVariety sage: is_CPRFanoToricVariety(1) + doctest:warning... + DeprecationWarning: The function is_CPRFanoToricVariety is deprecated; use 'isinstance(..., CPRFanoToricVariety_field)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. False sage: FTV = toric_varieties.P2() sage: FTV @@ -179,6 +182,8 @@ def is_CPRFanoToricVariety(x): sage: is_CPRFanoToricVariety(ProjectiveSpace(2)) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_CPRFanoToricVariety is deprecated; use 'isinstance(..., CPRFanoToricVariety_field)' instead.") return isinstance(x, CPRFanoToricVariety_field) @@ -1142,7 +1147,7 @@ def cartesian_product(self, other, sage: P1xP2.Delta_polar() 3-d reflexive polytope in 3-d lattice N+N """ - if is_CPRFanoToricVariety(other): + if isinstance(other, CPRFanoToricVariety_field): fan = self.fan().cartesian_product(other.fan()) Delta_polar = LatticePolytope(fan.rays()) @@ -1314,7 +1319,7 @@ def __init__(self, P_Delta, monomial_points=None, coefficient_names=None, s^2*x^2 + s*t*x^2 + t^2*x^2 + s^2*x*y + s*t*x*y + t^2*x*y + s^2*y^2 + s*t*y^2 + t^2*y^2 """ - if not is_CPRFanoToricVariety(P_Delta): + if not isinstance(P_Delta, CPRFanoToricVariety_field): raise TypeError("anticanonical hypersurfaces can only be " "constructed for CPR-Fano toric varieties!" "\nGot: %s" % P_Delta) @@ -1428,7 +1433,7 @@ def __init__(self, P_Delta, nef_partition, b1*z1*z2^2 + b2*z2^2*z4 + b5*z1*z2*z5 + b4*z2*z4*z5 + b3*z1*z5^2 + b0*z4*z5^2 """ - if not is_CPRFanoToricVariety(P_Delta): + if not isinstance(P_Delta, CPRFanoToricVariety_field): raise TypeError("nef complete intersections can only be " "constructed for CPR-Fano toric varieties!" "\nGot: %s" % P_Delta) diff --git a/src/sage/schemes/toric/homset.py b/src/sage/schemes/toric/homset.py index e02d0b92078..80a879a6aed 100644 --- a/src/sage/schemes/toric/homset.py +++ b/src/sage/schemes/toric/homset.py @@ -166,8 +166,8 @@ def __init__(self, X, Y, category=None, check=True, base=ZZ): to Rational polyhedral fan in 1-d lattice N. """ SchemeHomset_generic.__init__(self, X, Y, category=category, check=check, base=base) - from sage.schemes.toric.variety import is_ToricVariety - if is_ToricVariety(X) and is_ToricVariety(Y): + from sage.schemes.toric.variety import ToricVariety_field + if isinstance(X, ToricVariety_field) and isinstance(Y, ToricVariety_field): self.register_conversion(MatrixSpace(ZZ, X.fan().dim(), Y.fan().dim())) def _element_constructor_(self, x, check=True): diff --git a/src/sage/schemes/toric/morphism.py b/src/sage/schemes/toric/morphism.py index c22f88e99fb..a7afee25f30 100644 --- a/src/sage/schemes/toric/morphism.py +++ b/src/sage/schemes/toric/morphism.py @@ -374,7 +374,7 @@ from sage.geometry.cone import Cone from sage.geometry.fan import Fan -from sage.schemes.generic.scheme import is_Scheme +from sage.schemes.generic.scheme import Scheme from sage.schemes.generic.morphism import ( is_SchemeMorphism, SchemeMorphism, SchemeMorphism_point, SchemeMorphism_polynomial @@ -425,7 +425,7 @@ def __init__(self, X, coordinates, check=True): [1 : 2 : 3 : 4] """ # Convert scheme to its set of points over the base ring - if is_Scheme(X): + if isinstance(X, Scheme): X = X(X.base_ring()) super().__init__(X) if check: diff --git a/src/sage/schemes/toric/sheaf/constructor.py b/src/sage/schemes/toric/sheaf/constructor.py index 0fb0c0a34e5..3b23c4d9213 100644 --- a/src/sage/schemes/toric/sheaf/constructor.py +++ b/src/sage/schemes/toric/sheaf/constructor.py @@ -13,7 +13,7 @@ # the License, or (at your option) any later version. # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.schemes.toric.variety import is_ToricVariety +from sage.schemes.toric.variety import ToricVariety_field from sage.modules.filtered_vector_space import FilteredVectorSpace @@ -36,7 +36,7 @@ def TangentBundle(X): sage: TangentBundle(dP7) Rank 2 bundle on 2-d CPR-Fano toric variety covered by 5 affine patches. """ - if not is_ToricVariety(X): + if not isinstance(X, ToricVariety_field): raise ValueError('not a toric variety') fan = X.fan() @@ -94,7 +94,7 @@ def TrivialBundle(X, rank=1): sage: I3.cohomology(weight=(0,0), dim=True) (3, 0, 0) """ - if not is_ToricVariety(X): + if not isinstance(X, ToricVariety_field): raise ValueError('not a toric variety') base_ring = X.base_ring() @@ -127,7 +127,7 @@ def LineBundle(X, D): sage: O_D.cohomology(dim=True, weight=(0,0)) (1, 0, 0) """ - if not is_ToricVariety(X): + if not isinstance(X, ToricVariety_field): raise ValueError('not a toric variety') base_ring = X.base_ring() diff --git a/src/sage/schemes/toric/sheaf/klyachko.py b/src/sage/schemes/toric/sheaf/klyachko.py index 4325e77f186..b6c7147140c 100644 --- a/src/sage/schemes/toric/sheaf/klyachko.py +++ b/src/sage/schemes/toric/sheaf/klyachko.py @@ -69,8 +69,13 @@ def is_KlyachkoBundle(X): sage: from sage.schemes.toric.sheaf.klyachko import is_KlyachkoBundle sage: is_KlyachkoBundle('test') + doctest:warning... + DeprecationWarning: The function is_KlyachkoBundle is deprecated; use 'isinstance(..., KlyachkoBundle_class)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_KlyachkoBundle is deprecated; use 'isinstance(..., KlyachkoBundle_class)' instead.") return isinstance(X, KlyachkoBundle_class) diff --git a/src/sage/schemes/toric/variety.py b/src/sage/schemes/toric/variety.py index 6a6a8d3252a..b978ede251d 100644 --- a/src/sage/schemes/toric/variety.py +++ b/src/sage/schemes/toric/variety.py @@ -351,6 +351,9 @@ def is_ToricVariety(x): sage: from sage.schemes.toric.variety import is_ToricVariety sage: is_ToricVariety(1) + doctest:warning... + DeprecationWarning: The function is_ToricVariety is deprecated; use 'isinstance(..., ToricVariety_field)' instead. + See https://github.com/sagemath/sage/issues/38022 for details. False sage: fan = FaceFan(lattice_polytope.cross_polytope(2)) sage: P = ToricVariety(fan) @@ -361,6 +364,8 @@ def is_ToricVariety(x): sage: is_ToricVariety(ProjectiveSpace(2)) False """ + from sage.misc.superseded import deprecation + deprecation(38022, "The function is_ToricVariety is deprecated; use 'isinstance(..., ToricVariety_field)' instead.") return isinstance(x, ToricVariety_field) @@ -1339,7 +1344,7 @@ def is_isomorphic(self, another): """ if self is another: return True - if not is_ToricVariety(another): + if not isinstance(another, ToricVariety_field): raise TypeError( "only another toric variety can be checked for isomorphism; " "got %s" % another)