diff --git a/src/sage/algebras/free_algebra_quotient_element.py b/src/sage/algebras/free_algebra_quotient_element.py index c4ade5274b2..0523ff4b9dc 100644 --- a/src/sage/algebras/free_algebra_quotient_element.py +++ b/src/sage/algebras/free_algebra_quotient_element.py @@ -38,6 +38,10 @@ def is_FreeAlgebraQuotientElement(x): sage: H, (i,j,k) = sage.algebras.free_algebra_quotient.hamilton_quatalg(QQ) sage: sage.algebras.free_algebra_quotient_element.is_FreeAlgebraQuotientElement(i) + doctest:warning... + DeprecationWarning: The function is_FreeAlgebraQuotientElement is deprecated; + use 'isinstance(..., FreeAlgebraQuotientElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True Of course this is testing the data type:: @@ -47,6 +51,10 @@ def is_FreeAlgebraQuotientElement(x): sage: sage.algebras.free_algebra_quotient_element.is_FreeAlgebraQuotientElement(H(1)) True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_FreeAlgebraQuotientElement is deprecated; " + "use 'isinstance(..., FreeAlgebraQuotientElement)' instead.") return isinstance(x, FreeAlgebraQuotientElement) diff --git a/src/sage/categories/functor.pyx b/src/sage/categories/functor.pyx index 5e3262c8dd3..2ca369c2ef5 100644 --- a/src/sage/categories/functor.pyx +++ b/src/sage/categories/functor.pyx @@ -96,15 +96,15 @@ cdef class Functor(SageObject): Category of rings sage: F.codomain() Category of commutative additive groups - sage: from sage.categories.functor import is_Functor - sage: is_Functor(F) + sage: from sage.categories.functor import Functor + sage: isinstance(F, Functor) True sage: I = IdentityFunctor(abgrps) sage: I The identity functor on Category of commutative additive groups sage: I.domain() Category of commutative additive groups - sage: is_Functor(I) + sage: isinstance(I, Functor) True Note that by default, an instance of the class Functor is coercion @@ -422,12 +422,9 @@ cdef class Functor(SageObject): def is_Functor(x): """ - Test whether the argument is a functor - - NOTE: + Test whether the argument is a functor. - There is a deprecation warning when using it from top level. - Therefore we import it in our doc test. + This function is deprecated. EXAMPLES:: @@ -436,6 +433,10 @@ def is_Functor(x): sage: F1 FractionField sage: is_Functor(F1) + doctest:warning... + DeprecationWarning: The function is_Functor is deprecated; + use 'isinstance(..., Functor)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_Functor(FractionField) False @@ -446,6 +447,10 @@ def is_Functor(x): True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_Functor is deprecated; " + "use 'isinstance(..., Functor)' instead.") return isinstance(x, Functor) diff --git a/src/sage/groups/abelian_gps/abelian_group_element.py b/src/sage/groups/abelian_gps/abelian_group_element.py index ac279f71011..172a671906c 100644 --- a/src/sage/groups/abelian_gps/abelian_group_element.py +++ b/src/sage/groups/abelian_gps/abelian_group_element.py @@ -57,11 +57,19 @@ def is_AbelianGroupElement(x): sage: from sage.groups.abelian_gps.abelian_group_element import is_AbelianGroupElement sage: is_AbelianGroupElement(3) + doctest:warning... + DeprecationWarning: The function is_AbelianGroupElement is deprecated; + use 'isinstance(..., AbelianGroupElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. False sage: F = AbelianGroup(5, [3,4,5,8,7], 'abcde') sage: is_AbelianGroupElement(F.0) True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_AbelianGroupElement is deprecated; " + "use 'isinstance(..., AbelianGroupElement)' instead.") return isinstance(x, AbelianGroupElement) diff --git a/src/sage/groups/abelian_gps/dual_abelian_group.py b/src/sage/groups/abelian_gps/dual_abelian_group.py index 24c910d96d9..aaa231b0f81 100644 --- a/src/sage/groups/abelian_gps/dual_abelian_group.py +++ b/src/sage/groups/abelian_gps/dual_abelian_group.py @@ -345,7 +345,7 @@ def __contains__(self, X): sage: A*B^2*D^7 in Fd True """ - return X.parent() == self and is_DualAbelianGroupElement(X) + return X.parent() == self and isinstance(X, DualAbelianGroupElement) def order(self): """ diff --git a/src/sage/groups/abelian_gps/dual_abelian_group_element.py b/src/sage/groups/abelian_gps/dual_abelian_group_element.py index ecf17404bdd..048666b020f 100644 --- a/src/sage/groups/abelian_gps/dual_abelian_group_element.py +++ b/src/sage/groups/abelian_gps/dual_abelian_group_element.py @@ -71,10 +71,18 @@ def is_DualAbelianGroupElement(x) -> bool: sage: from sage.groups.abelian_gps.dual_abelian_group import is_DualAbelianGroupElement sage: F = AbelianGroup(5, [5,5,7,8,9], names=list("abcde")).dual_group() sage: is_DualAbelianGroupElement(F) + doctest:warning... + DeprecationWarning: The function is_DualAbelianGroupElement is deprecated; + use 'isinstance(..., DualAbelianGroupElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. False sage: is_DualAbelianGroupElement(F.an_element()) True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_DualAbelianGroupElement is deprecated; " + "use 'isinstance(..., DualAbelianGroupElement)' instead.") return isinstance(x, DualAbelianGroupElement) diff --git a/src/sage/groups/perm_gps/permgroup_element.pyx b/src/sage/groups/perm_gps/permgroup_element.pyx index c6eb59df19f..4d6a67fe41b 100644 --- a/src/sage/groups/perm_gps/permgroup_element.pyx +++ b/src/sage/groups/perm_gps/permgroup_element.pyx @@ -211,8 +211,16 @@ def is_PermutationGroupElement(x): sage: p = PermutationGroupElement([(1,2),(3,4,5)]) sage: from sage.groups.perm_gps.permgroup_element import is_PermutationGroupElement sage: is_PermutationGroupElement(p) + doctest:warning... + DeprecationWarning: The function is_PermutationGroupElement is deprecated; + use 'isinstance(..., PermutationGroupElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38184, + "The function is_PermutationGroupElement is deprecated; " + "use 'isinstance(..., PermutationGroupElement)' instead.") return isinstance(x, PermutationGroupElement) diff --git a/src/sage/homology/chain_complex_homspace.py b/src/sage/homology/chain_complex_homspace.py index cf981d76561..1170b50b885 100644 --- a/src/sage/homology/chain_complex_homspace.py +++ b/src/sage/homology/chain_complex_homspace.py @@ -116,9 +116,17 @@ def is_ChainComplexHomspace(x): sage: C = T.chain_complex(augmented=True, cochain=True) sage: G = Hom(C, C) sage: is_ChainComplexHomspace(G) + doctest:warning... + DeprecationWarning: The function is_ChainComplexHomspace is deprecated; + use 'isinstance(..., ChainComplexHomspace)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_ChainComplexHomspace is deprecated; " + "use 'isinstance(..., ChainComplexHomspace)' instead.") return isinstance(x, ChainComplexHomspace) diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx index e452b51fc82..0b51d5c1df7 100644 --- a/src/sage/matrix/matrix2.pyx +++ b/src/sage/matrix/matrix2.pyx @@ -99,7 +99,7 @@ from sage.arith.numerical_approx cimport digits_to_bits import sage.modules.free_module from sage.matrix import berlekamp_massey -from sage.modules.free_module_element import is_FreeModuleElement +from sage.modules.free_module_element import FreeModuleElement from sage.matrix.matrix_misc import permanental_minor_polynomial from sage.misc.misc_c import prod @@ -6153,7 +6153,7 @@ cdef class Matrix(Matrix1): """ if v == 0: return [] - if not is_FreeModuleElement(v): + if not isinstance(v, FreeModuleElement): raise TypeError("v must be a FreeModuleElement") VS = v.parent() V = VS.span([v]) diff --git a/src/sage/misc/latex.py b/src/sage/misc/latex.py index 9c2af93adeb..422aa90b89b 100644 --- a/src/sage/misc/latex.py +++ b/src/sage/misc/latex.py @@ -1934,7 +1934,7 @@ def png(x, filename, density=150, debug=False, ....: png(ZZ[x], f.name) """ import sage.plot.all - if sage.plot.graphics.is_Graphics(x): + if isinstance(x, sage.plot.graphics.Graphics): x.save(filename) return # if not graphics: create a string of latex code to write in a file diff --git a/src/sage/modular/dirichlet.py b/src/sage/modular/dirichlet.py index 4d0436bad22..e579c5090e3 100644 --- a/src/sage/modular/dirichlet.py +++ b/src/sage/modular/dirichlet.py @@ -172,10 +172,18 @@ def is_DirichletCharacter(x) -> bool: sage: from sage.modular.dirichlet import is_DirichletCharacter sage: is_DirichletCharacter(trivial_character(3)) + doctest:warning... + DeprecationWarning: The function is_DirichletCharacter is deprecated; + use 'isinstance(..., DirichletCharacter)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_DirichletCharacter([1]) False """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_DirichletCharacter is deprecated; " + "use 'isinstance(..., DirichletCharacter)' instead.") return isinstance(x, DirichletCharacter) @@ -262,7 +270,7 @@ def __init__(self, parent, x, check=True): orders = parent.integers_mod().unit_group().gens_orders() if len(x) != len(orders): raise ValueError("wrong number of values (= {}) on generators (want {})".format(x, len(orders))) - if free_module_element.is_FreeModuleElement(x): + if isinstance(x, free_module_element.FreeModuleElement): x = parent._module(x) if any(u * v for u, v in zip(x, orders)): raise ValueError("values (= {} modulo {}) must have additive orders dividing {}, respectively" @@ -276,7 +284,7 @@ def __init__(self, parent, x, check=True): .format(x, orders)) self.values_on_gens.set_cache(x) else: - if free_module_element.is_FreeModuleElement(x): + if isinstance(x, free_module_element.FreeModuleElement): self.element.set_cache(x) else: self.values_on_gens.set_cache(x) diff --git a/src/sage/modular/modform/ambient_eps.py b/src/sage/modular/modform/ambient_eps.py index 1d42305436c..81527a72aa8 100644 --- a/src/sage/modular/modform/ambient_eps.py +++ b/src/sage/modular/modform/ambient_eps.py @@ -124,7 +124,7 @@ def __init__(self, character, weight=2, base_ring=None, eis_only=False): sage: type(m) """ - if not dirichlet.is_DirichletCharacter(character): + if not isinstance(character, dirichlet.DirichletCharacter): raise TypeError("character (=%s) must be a Dirichlet character" % character) if base_ring is None: base_ring = character.base_ring() diff --git a/src/sage/modular/modform/element.py b/src/sage/modular/modform/element.py index aa859d9c38c..72880952610 100644 --- a/src/sage/modular/modform/element.py +++ b/src/sage/modular/modform/element.py @@ -72,10 +72,18 @@ def is_ModularFormElement(x): sage: from sage.modular.modform.element import is_ModularFormElement sage: is_ModularFormElement(5) + doctest:warning... + DeprecationWarning: The function is_ModularFormElement is deprecated; + use 'isinstance(..., ModularFormElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. False sage: is_ModularFormElement(ModularForms(11).0) True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_ModularFormElement is deprecated; " + "use 'isinstance(..., ModularFormElement)' instead.") return isinstance(x, ModularFormElement) @@ -3265,7 +3273,7 @@ def __init__(self, parent, forms_datum): k = ZZ(k) if k == 0: forms_dictionary[k] = parent.base_ring().coerce(f) - elif is_ModularFormElement(f): + elif isinstance(f, ModularFormElement): if f.weight() == k: if parent.group().is_subgroup(f.group()) and parent.base_ring().has_coerce_map_from(f.base_ring()): M = parent.modular_forms_of_weight(f.weight()).change_ring(parent.base_ring()) @@ -3280,7 +3288,7 @@ def __init__(self, parent, forms_datum): raise ValueError('at least one key (%s) of the defining dictionary is not an integer' % (k)) elif isinstance(forms_datum, list): for f in forms_datum: - if is_ModularFormElement(f): + if isinstance(f, ModularFormElement): chi = f.character(compute=False) if (chi is not None) and (not chi.is_trivial()): raise NotImplementedError("graded modular forms for non-trivial characters is not yet implemented") diff --git a/src/sage/modular/modform/hecke_operator_on_qexp.py b/src/sage/modular/modform/hecke_operator_on_qexp.py index ea472bb4185..daf4c3bfbec 100644 --- a/src/sage/modular/modform/hecke_operator_on_qexp.py +++ b/src/sage/modular/modform/hecke_operator_on_qexp.py @@ -23,8 +23,8 @@ lazy_import('sage.rings.number_field.number_field', 'CyclotomicField') -from sage.modular.dirichlet import DirichletGroup, is_DirichletCharacter -from .element import is_ModularFormElement +from sage.modular.dirichlet import DirichletGroup, DirichletCharacter +from .element import ModularFormElement def hecke_operator_on_qexp(f, n, k, eps=None, prec=None, check=True, _return_list=False): @@ -87,16 +87,16 @@ def hecke_operator_on_qexp(f, n, k, eps=None, # ZZ can coerce to GF(p), but QQ can't. eps = DirichletGroup(1, base_ring=ZZ)[0] if check: - if not (is_PowerSeries(f) or is_ModularFormElement(f)): + if not (is_PowerSeries(f) or isinstance(f, ModularFormElement)): raise TypeError("f (=%s) must be a power series or modular form" % f) - if not is_DirichletCharacter(eps): + if not isinstance(eps, DirichletCharacter): raise TypeError("eps (=%s) must be a Dirichlet character" % eps) k = Integer(k) n = Integer(n) v = [] if prec is None: - if is_ModularFormElement(f): + if isinstance(f, ModularFormElement): # always want at least three coefficients, but not too many, unless # requested pr = max(f.prec(), f.parent().prec(), (n+1)*3) @@ -123,7 +123,7 @@ def hecke_operator_on_qexp(f, n, k, eps=None, v.append(am) if _return_list: return v - if is_ModularFormElement(f): + if isinstance(f, ModularFormElement): R = f.parent()._q_expansion_ring() else: R = f.parent() diff --git a/src/sage/modular/modform/ring.py b/src/sage/modular/modform/ring.py index 897c4718107..bf7b10dc025 100644 --- a/src/sage/modular/modform/ring.py +++ b/src/sage/modular/modform/ring.py @@ -40,7 +40,7 @@ from sage.structure.richcmp import richcmp_method, richcmp from .constructor import ModularForms -from .element import is_ModularFormElement, GradedModularFormElement +from .element import ModularFormElement, GradedModularFormElement from .space import ModularFormsSpace @@ -517,7 +517,7 @@ def _element_constructor_(self, forms_datum): forms_dictionary = forms_datum elif isinstance(forms_datum, self.element_class): forms_dictionary = forms_datum._forms_dictionary - elif is_ModularFormElement(forms_datum): + elif isinstance(forms_datum, ModularFormElement): if self.group().is_subgroup(forms_datum.group()) and self.base_ring().has_coerce_map_from(forms_datum.base_ring()): forms_dictionary = {forms_datum.weight(): forms_datum} else: diff --git a/src/sage/modular/modform_hecketriangle/abstract_space.py b/src/sage/modular/modform_hecketriangle/abstract_space.py index c2148a4e543..719d8847f31 100644 --- a/src/sage/modular/modform_hecketriangle/abstract_space.py +++ b/src/sage/modular/modform_hecketriangle/abstract_space.py @@ -17,7 +17,7 @@ from sage.matrix.constructor import matrix from sage.misc.cachefunc import cached_method from sage.misc.lazy_import import lazy_import -from sage.modules.free_module_element import is_FreeModuleElement +from sage.modules.free_module_element import FreeModuleElement from sage.modules.free_module_element import vector from sage.rings.infinity import infinity from sage.rings.integer import Integer @@ -262,9 +262,9 @@ def _element_constructor_(self, el): return self.construct_form(el) else: return self.construct_quasi_form(el) - if is_FreeModuleElement(el) and (self.module() is P or self.ambient_module() is P): + if isinstance(el, FreeModuleElement) and (self.module() is P or self.ambient_module() is P): return self.element_from_ambient_coordinates(el) - if (not self.is_ambient()) and (isinstance(el, list) or isinstance(el, tuple) or is_FreeModuleElement(el)) and len(el) == self.rank(): + if (not self.is_ambient()) and (isinstance(el, list) or isinstance(el, tuple) or isinstance(el, FreeModuleElement)) and len(el) == self.rank(): try: return self.element_from_coordinates(el) except (ArithmeticError, TypeError): diff --git a/src/sage/modular/modsym/ambient.py b/src/sage/modular/modsym/ambient.py index 8585de56c46..02e1bc3cb9e 100644 --- a/src/sage/modular/modsym/ambient.py +++ b/src/sage/modular/modsym/ambient.py @@ -79,7 +79,7 @@ class ``ModularSymbolsAmbient``, derived from from sage.misc.latex import latex from sage.misc.verbose import verbose from sage.modular.arithgroup.arithgroup_element import M2Z -from sage.modular.dirichlet import TrivialCharacter, is_DirichletCharacter +from sage.modular.dirichlet import DirichletCharacter, TrivialCharacter from sage.modular.hecke.ambient_module import AmbientHeckeModule from sage.modular.cusps import Cusp from sage.modular.modsym.apply import apply_to_monomial @@ -2171,7 +2171,7 @@ def twisted_winding_element(self, i, eps): sage: M.twisted_winding_element(0,eps) 2*(1,23) - 2*(1,32) + 2*(1,34) """ - if not is_DirichletCharacter(eps): + if not isinstance(eps, DirichletCharacter): raise TypeError("eps must be a Dirichlet character.") if (i < 0) or (i > self.weight() - 2): raise ValueError("i must be between 0 and k-2.") diff --git a/src/sage/modular/modsym/boundary.py b/src/sage/modular/modsym/boundary.py index 2076d81eb1e..093ba6a594f 100644 --- a/src/sage/modular/modsym/boundary.py +++ b/src/sage/modular/modsym/boundary.py @@ -93,7 +93,7 @@ from sage.structure.richcmp import richcmp_method, richcmp import sage.modules.free_module as free_module -from sage.modules.free_module_element import is_FreeModuleElement +from sage.modules.free_module_element import FreeModuleElement import sage.modular.arithgroup.all as arithgroup import sage.modular.cusps as cusps @@ -554,7 +554,7 @@ def __call__(self, x): elif isinstance(x, ManinSymbol): return self._coerce_in_manin_symbol(x) - elif element.is_ModularSymbolsElement(x): + elif isinstance(x, element.ModularSymbolsElement): M = x.parent() if not isinstance(M, ModularSymbolsAmbient): raise TypeError("x (=%s) must be an element of a space of modular symbols of type ModularSymbolsAmbient" % x) @@ -566,7 +566,7 @@ def __call__(self, x): return self(0) return sum([c * self._coerce_in_manin_symbol(v) for c, v in S]) - elif is_FreeModuleElement(x): + elif isinstance(x, FreeModuleElement): y = dict(enumerate(x)) return BoundarySpaceElement(self, y) diff --git a/src/sage/modular/modsym/element.py b/src/sage/modular/modsym/element.py index 427d9218f8d..21b1ecb181b 100644 --- a/src/sage/modular/modsym/element.py +++ b/src/sage/modular/modsym/element.py @@ -36,10 +36,18 @@ def is_ModularSymbolsElement(x) -> bool: EXAMPLES:: sage: sage.modular.modsym.element.is_ModularSymbolsElement(ModularSymbols(11, 2).0) + doctest:warning... + DeprecationWarning: The function is_ModularSymbolsElement is deprecated; + use 'isinstance(..., ModularSymbolsElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: sage.modular.modsym.element.is_ModularSymbolsElement(13) False """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_ModularSymbolsElement is deprecated; " + "use 'isinstance(..., ModularSymbolsElement)' instead.") return isinstance(x, ModularSymbolsElement) diff --git a/src/sage/modular/modsym/manin_symbol.pyx b/src/sage/modular/modsym/manin_symbol.pyx index 9bf955b562b..434aa370e18 100644 --- a/src/sage/modular/modsym/manin_symbol.pyx +++ b/src/sage/modular/modsym/manin_symbol.pyx @@ -43,10 +43,18 @@ def is_ManinSymbol(x): sage: s [Y^2,(1,2)] sage: is_ManinSymbol(s) + doctest:warning... + DeprecationWarning: The function is_ManinSymbol is deprecated; + use 'isinstance(..., ManinSymbol)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_ManinSymbol(m[3]) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38184, + "The function is_ManinSymbol is deprecated; " + "use 'isinstance(..., ManinSymbol)' instead.") return isinstance(x, ManinSymbol) diff --git a/src/sage/modules/free_module.py b/src/sage/modules/free_module.py index f1c7c7cdbaa..6bf1b79bd7d 100644 --- a/src/sage/modules/free_module.py +++ b/src/sage/modules/free_module.py @@ -783,7 +783,7 @@ def span(gens, base_ring=None, check=True, already_echelonized=False): return FreeModule(R, 0) else: x = gens[0] - if free_module_element.is_FreeModuleElement(x): + if isinstance(x, free_module_element.FreeModuleElement): M = x.parent() else: try: diff --git a/src/sage/modules/free_module_element.pyx b/src/sage/modules/free_module_element.pyx index 4500695e297..d71d22ac1f7 100644 --- a/src/sage/modules/free_module_element.pyx +++ b/src/sage/modules/free_module_element.pyx @@ -139,10 +139,18 @@ def is_FreeModuleElement(x): EXAMPLES:: sage: sage.modules.free_module_element.is_FreeModuleElement(0) + doctest:warning... + DeprecationWarning: The function is_FreeModuleElement is deprecated; + use 'isinstance(..., FreeModuleElement)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. False sage: sage.modules.free_module_element.is_FreeModuleElement(vector([1,2,3])) True """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38184, + "The function is_FreeModuleElement is deprecated; " + "use 'isinstance(..., FreeModuleElement)' instead.") return isinstance(x, FreeModuleElement) diff --git a/src/sage/monoids/free_abelian_monoid_element.pyx b/src/sage/monoids/free_abelian_monoid_element.pyx index c81c1fa5575..9f66e83942d 100644 --- a/src/sage/monoids/free_abelian_monoid_element.pyx +++ b/src/sage/monoids/free_abelian_monoid_element.pyx @@ -54,6 +54,10 @@ def is_FreeAbelianMonoidElement(x): - ``True`` if ``x`` is an object of type ``FreeAbelianMonoidElement``; ``False`` otherwise. """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38184, + "The function is_FreeAbelianMonoidElement is deprecated; " + "use 'isinstance(..., FreeAbelianMonoidElement)' instead.") return isinstance(x, FreeAbelianMonoidElement) diff --git a/src/sage/monoids/free_monoid_element.py b/src/sage/monoids/free_monoid_element.py index 42d295eab76..993fef9c72d 100644 --- a/src/sage/monoids/free_monoid_element.py +++ b/src/sage/monoids/free_monoid_element.py @@ -30,6 +30,10 @@ def is_FreeMonoidElement(x): + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_FreeMonoidElement is deprecated; " + "use 'isinstance(..., FreeMonoidElement)' instead.") return isinstance(x, FreeMonoidElement) diff --git a/src/sage/numerical/linear_functions.pyx b/src/sage/numerical/linear_functions.pyx index 3063ba7101d..d1a038fd54b 100644 --- a/src/sage/numerical/linear_functions.pyx +++ b/src/sage/numerical/linear_functions.pyx @@ -132,10 +132,18 @@ cpdef is_LinearFunction(x): sage: x = p.new_variable() sage: from sage.numerical.linear_functions import is_LinearFunction sage: is_LinearFunction(x[0] - 2*x[2]) + doctest:warning... + DeprecationWarning: The function is_LinearFunction is deprecated; + use 'isinstance(..., LinearFunction)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_LinearFunction('a string') False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38184, + "The function is_LinearFunction is deprecated; " + "use 'isinstance(..., LinearFunction)' instead.") return isinstance(x, LinearFunction) @@ -158,10 +166,18 @@ def is_LinearConstraint(x): sage: ieq = (x[0] <= x[1]) sage: from sage.numerical.linear_functions import is_LinearConstraint sage: is_LinearConstraint(ieq) + doctest:warning... + DeprecationWarning: The function is_LinearConstraint is deprecated; + use 'isinstance(..., LinearConstraint)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_LinearConstraint('a string') False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38184, + "The function is_LinearConstraint is deprecated; " + "use 'isinstance(..., LinearConstraint)' instead.") return isinstance(x, LinearConstraint) @@ -690,7 +706,7 @@ cdef class LinearFunctionsParent_class(Parent): sage: LF_QQ(f) is f False """ - if is_LinearFunction(x): + if isinstance(x, LinearFunction): return LinearFunction(self, (x)._f) return LinearFunction(self, x) @@ -891,7 +907,7 @@ cdef class LinearFunction(LinearFunctionOrConstraint): ... ValueError: x is from a different linear functions module """ - if is_LinearFunction(x): + if isinstance(x, LinearFunction): if self.parent() != x.parent(): raise ValueError('x is from a different linear functions module') if len((x)._f) != 1: @@ -1319,7 +1335,7 @@ cdef class LinearConstraintsParent_class(Parent): sage: LC_QQ(inequality) is inequality False """ - if right is None and is_LinearConstraint(left): + if right is None and isinstance(left, LinearConstraint): if (left.parent() is self) and (left.is_equation() == equality): return left else: diff --git a/src/sage/numerical/linear_tensor.py b/src/sage/numerical/linear_tensor.py index 217bd98f3bb..c4c62066db5 100644 --- a/src/sage/numerical/linear_tensor.py +++ b/src/sage/numerical/linear_tensor.py @@ -99,7 +99,7 @@ from sage.structure.parent import Parent from sage.misc.cachefunc import cached_function -from sage.numerical.linear_functions import is_LinearFunction, LinearFunctionsParent_class +from sage.numerical.linear_functions import LinearFunction, LinearFunctionsParent_class from sage.numerical.linear_tensor_element import LinearTensor @@ -128,10 +128,18 @@ def is_LinearTensor(x): sage: x = p.new_variable(nonnegative=False) sage: from sage.numerical.linear_tensor import is_LinearTensor sage: is_LinearTensor(x[0] - 2*x[2]) + doctest:warning... + DeprecationWarning: The function is_LinearTensor is deprecated; + use 'isinstance(..., LinearTensor)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. False sage: is_LinearTensor('a string') False """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_LinearTensor is deprecated; " + "use 'isinstance(..., LinearTensor)' instead.") return isinstance(x, LinearTensor) @@ -413,9 +421,9 @@ def _element_constructor_(self, x): (3.0, 3.0) + (2.0, 2.0)*x_1 + (1.0, 1.0)*x_3 """ M = self.free_module() - if is_LinearTensor(x): + if isinstance(x, LinearTensor): x = x.dict() - elif is_LinearFunction(x): + elif isinstance(x, LinearFunction): x = dict([key, self._convert_constant(value)] for key, value in x.dict().items()) elif isinstance(x, dict): x = dict([int(key), M(value)] for key, value in x.items()) diff --git a/src/sage/numerical/linear_tensor_constraints.py b/src/sage/numerical/linear_tensor_constraints.py index 24f94f3b3d6..60578c2511d 100644 --- a/src/sage/numerical/linear_tensor_constraints.py +++ b/src/sage/numerical/linear_tensor_constraints.py @@ -57,10 +57,18 @@ def is_LinearTensorConstraint(x): sage: vector_ieq = (x[0] * vector([1,2]) <= x[1] * vector([2,3])) sage: from sage.numerical.linear_tensor_constraints import is_LinearTensorConstraint sage: is_LinearTensorConstraint(vector_ieq) + doctest:warning... + DeprecationWarning: The function is_LinearTensorConstraint is deprecated; + use 'isinstance(..., LinearTensorConstraint)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_LinearTensorConstraint('a string') False """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_LinearTensorConstraint is deprecated; " + "use 'isinstance(..., LinearTensorConstraint)' instead.") return isinstance(x, LinearTensorConstraint) diff --git a/src/sage/numerical/linear_tensor_element.pyx b/src/sage/numerical/linear_tensor_element.pyx index c77aa290e21..f7dd2b61deb 100644 --- a/src/sage/numerical/linear_tensor_element.pyx +++ b/src/sage/numerical/linear_tensor_element.pyx @@ -169,7 +169,7 @@ cdef class LinearTensor(ModuleElement): ... ValueError: x is from a different linear functions module """ - if is_LinearFunction(x): + if isinstance(x, LinearFunction): if self.parent().linear_functions() != x.parent(): raise ValueError('x is from a different linear functions module') if len((x)._f) != 1: diff --git a/src/sage/numerical/mip.pyx b/src/sage/numerical/mip.pyx index 2690172b85a..7af017ebd17 100644 --- a/src/sage/numerical/mip.pyx +++ b/src/sage/numerical/mip.pyx @@ -2134,14 +2134,14 @@ cdef class MixedIntegerLinearProgram(SageObject): sage: p.solve() 6.0 """ - from sage.numerical.linear_functions import is_LinearFunction, is_LinearConstraint - from sage.numerical.linear_tensor import is_LinearTensor - from sage.numerical.linear_tensor_constraints import is_LinearTensorConstraint - if is_LinearFunction(linear_function) or is_LinearTensor(linear_function): + from sage.numerical.linear_functions import LinearFunction, LinearConstraint + from sage.numerical.linear_tensor import LinearTensor + from sage.numerical.linear_tensor_constraints import LinearTensorConstraint + if isinstance(linear_function, LinearFunction) or isinstance(linear_function, LinearTensor): # Find the parent for the coefficients - if is_LinearFunction(linear_function): + if isinstance(linear_function, LinearFunction): M = linear_function.parent().base_ring() - elif is_LinearTensor(linear_function): + elif isinstance(linear_function, LinearTensor): if not linear_function.parent().is_vector_space(): raise ValueError('the linear function must be vector-valued') M = linear_function.parent().free_module() @@ -2164,14 +2164,14 @@ cdef class MixedIntegerLinearProgram(SageObject): except KeyError: pass # Send to backend - if is_LinearFunction(linear_function): + if isinstance(linear_function, LinearFunction): if self._check_redundant and self._is_redundant_constraint(constraint, min, max): if return_indices: return [] return nrows_before = self._backend.nrows() self._backend.add_linear_constraint(constraint.items(), min, max, name) - elif is_LinearTensor(linear_function): + elif isinstance(linear_function, LinearTensor): nrows_before = self._backend.nrows() self._backend.add_linear_constraint_vector(M.degree(), constraint.items(), min, max, name) else: @@ -2179,7 +2179,7 @@ cdef class MixedIntegerLinearProgram(SageObject): if return_indices: return list(range(nrows_before, self._backend.nrows())) return - elif is_LinearConstraint(linear_function): + elif isinstance(linear_function, LinearConstraint): if not(min is None and max is None): raise ValueError('min and max must not be specified for (in)equalities') relation = linear_function @@ -2200,7 +2200,7 @@ cdef class MixedIntegerLinearProgram(SageObject): if new_indices is not None: row_indices.extend(new_indices) return row_indices - elif is_LinearTensorConstraint(linear_function): + elif isinstance(linear_function, LinearTensorConstraint): if not(min is None and max is None): raise ValueError('min and max must not be specified for (in)equalities') relation = linear_function diff --git a/src/sage/numerical/sdp.pyx b/src/sage/numerical/sdp.pyx index 4f6f4db9291..7e214ad5023 100644 --- a/src/sage/numerical/sdp.pyx +++ b/src/sage/numerical/sdp.pyx @@ -233,7 +233,7 @@ AUTHORS: from sage.structure.parent cimport Parent from sage.structure.element cimport Element -from sage.numerical.linear_functions import is_LinearFunction, is_LinearConstraint +from sage.numerical.linear_functions import LinearFunction, LinearConstraint from sage.matrix.constructor import matrix from sage.structure.element import Matrix @@ -895,10 +895,10 @@ cdef class SemidefiniteProgram(SageObject): if linear_function is 0: return - from sage.numerical.linear_tensor_constraints import is_LinearTensorConstraint - from sage.numerical.linear_tensor import is_LinearTensor + from sage.numerical.linear_tensor_constraints import LinearTensorConstraint + from sage.numerical.linear_tensor import LinearTensor - if is_LinearTensorConstraint(linear_function) or is_LinearConstraint(linear_function): + if isinstance(linear_function, LinearTensorConstraint) or isinstance(linear_function, LinearConstraint): c = linear_function if c.is_equation(): self.add_constraint(c.lhs()-c.rhs(), name=name) @@ -906,7 +906,7 @@ cdef class SemidefiniteProgram(SageObject): else: self.add_constraint(c.lhs()-c.rhs(), name=name) - elif is_LinearFunction(linear_function) or is_LinearTensor(linear_function): + elif isinstance(linear_function, LinearFunction) or isinstance(linear_function, LinearTensor): l = sorted(linear_function.dict().items()) self._backend.add_linear_constraint(l, name) diff --git a/src/sage/plot/graphics.py b/src/sage/plot/graphics.py index 97d35e3ad54..a84d162cb56 100644 --- a/src/sage/plot/graphics.py +++ b/src/sage/plot/graphics.py @@ -61,10 +61,18 @@ def is_Graphics(x): sage: from sage.plot.graphics import is_Graphics sage: is_Graphics(1) + doctest:warning... + DeprecationWarning: The function is_Graphics is deprecated; + use 'isinstance(..., Graphics)' instead. + See https://github.com/sagemath/sage/issues/38184 for details. False sage: is_Graphics(disk((0.0, 0.0), 1, (0, pi/2))) # needs sage.symbolic True """ + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_Graphics is deprecated; " + "use 'isinstance(..., Graphics)' instead.") return isinstance(x, Graphics) diff --git a/src/sage/probability/random_variable.py b/src/sage/probability/random_variable.py index a07af1220d6..1a779aba083 100644 --- a/src/sage/probability/random_variable.py +++ b/src/sage/probability/random_variable.py @@ -27,15 +27,31 @@ ################################################################################ def is_ProbabilitySpace(S): + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_ProbabilitySpace is deprecated; " + "use 'isinstance(..., ProbabilitySpace_generic)' instead.") return isinstance(S, ProbabilitySpace_generic) def is_DiscreteProbabilitySpace(S): + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_DiscreteProbabilitySpace is deprecated; " + "use 'isinstance(..., DiscreteProbabilitySpace)' instead.") return isinstance(S, DiscreteProbabilitySpace) def is_RandomVariable(X): + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_RandomVariable is deprecated; " + "use 'isinstance(..., RandomVariable_generic)' instead.") return isinstance(X, RandomVariable_generic) def is_DiscreteRandomVariable(X): + from sage.misc.superseded import deprecation + deprecation(38184, + "The function is_DiscreteRandomVariable is deprecated; " + "use 'isinstance(..., DiscreteRandomVariable)' instead.") return isinstance(X, DiscreteRandomVariable) ################################################################################ @@ -49,7 +65,7 @@ class RandomVariable_generic(Parent): A random variable. """ def __init__(self, X, RR): - if not is_ProbabilitySpace(X): + if not isinstance(X, ProbabilitySpace_generic): raise TypeError("Argument X (= %s) must be a probability space" % X) Parent.__init__(self, X) self._codomain = RR @@ -81,7 +97,7 @@ def __init__(self, X, f, codomain=None, check=False): - f -- a dictionary such that X[x] = value for x in X is the discrete function on X """ - if not is_DiscreteProbabilitySpace(X): + if not isinstance(X, DiscreteProbabilitySpace): raise TypeError("Argument X (= %s) must be a discrete probability space" % X) if check: raise NotImplementedError("Not implemented") diff --git a/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py b/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py index 204030c1142..d9a9996d44e 100644 --- a/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +++ b/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py @@ -56,7 +56,7 @@ from sage.misc.repr import repr_lincomb from sage.modules.free_module_element import vector from sage.modules.free_module import FreeModule -from sage.modules.free_module_element import is_FreeModuleElement +from sage.modules.free_module_element import FreeModuleElement from sage.modules.module import Module from sage.rings.finite_rings.integer_mod_ring import IntegerModRing as Integers from sage.rings.integer import Integer @@ -1894,7 +1894,7 @@ def __init__(self, parent, val=0, offset=0, check=True): return if isinstance(val, tuple): val, offset = val - if isinstance(val, list) and val and is_FreeModuleElement(val[0]): + if isinstance(val, list) and val and isinstance(val[0], FreeModuleElement): val = transpose_list(val) self._f = parent._poly_ring(val) if offset != 0: