diff --git a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py index 192e531cd82..8d18bb4023d 100644 --- a/src/sage/dynamics/arithmetic_dynamics/projective_ds.py +++ b/src/sage/dynamics/arithmetic_dynamics/projective_ds.py @@ -89,7 +89,6 @@ class initialization directly. from sage.rings.finite_rings.integer_mod_ring import Zmod from sage.rings.fraction_field import FractionField, FractionField_generic, FractionField_1poly_field from sage.rings.fraction_field_element import FractionFieldElement -from sage.rings.function_field.function_field import is_FunctionField from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.polynomial.flatten import FlatteningMorphism, UnflatteningMorphism @@ -4534,7 +4533,7 @@ def preperiodic_points(self, m, n, **kwds): else: f_sub = self.change_ring(R) R = f_sub.base_ring() #in the case when R is an embedding - if isinstance(R, FractionField_1poly_field) or is_FunctionField(R): + if isinstance(R, FractionField_1poly_field) or R in FunctionFields(): raise NotImplementedError('Periodic points not implemented for function fields; ' 'clear denominators and use the polynomial ring instead') CR = f_sub.coordinate_ring() @@ -4872,7 +4871,7 @@ def periodic_points(self, n, minimal=True, formal=False, R=None, algorithm='vari else: f_sub = self.change_ring(R) R = f_sub.base_ring() #in the case when R is an embedding - if isinstance(R, FractionField_1poly_field) or is_FunctionField(R): + if isinstance(R, FractionField_1poly_field) or R in FunctionFields(): raise NotImplementedError('periodic points not implemented for fraction function fields; ' 'clear denominators and use the polynomial ring instead') if isinstance(R, FractionField_generic): diff --git a/src/sage/rings/function_field/element.pyx b/src/sage/rings/function_field/element.pyx index 093325f249c..d198f2694a4 100644 --- a/src/sage/rings/function_field/element.pyx +++ b/src/sage/rings/function_field/element.pyx @@ -64,8 +64,9 @@ AUTHORS: # https://www.gnu.org/licenses/ # ***************************************************************************** -from sage.structure.element cimport FieldElement +from sage.categories.function_fields import FunctionFields from sage.misc.cachefunc import cached_method +from sage.structure.element cimport FieldElement def is_FunctionFieldElement(x): @@ -76,14 +77,24 @@ def is_FunctionFieldElement(x): sage: t = FunctionField(QQ,'t').gen() sage: sage.rings.function_field.element.is_FunctionFieldElement(t) + doctest:warning... + DeprecationWarning: The function is_FunctionFieldElement is deprecated; + use '....parent() in FunctionFields()' instead. + See https://github.com/sagemath/sage/issues/38289 for details. True sage: sage.rings.function_field.element.is_FunctionFieldElement(0) False """ + from sage.misc.superseded import deprecation_cython + deprecation_cython(38289, + "The function is_FunctionFieldElement is deprecated; " + "use '....parent() in FunctionFields()' instead.") if isinstance(x, FunctionFieldElement): return True - from sage.rings.function_field.function_field import is_FunctionField - return is_FunctionField(x.parent()) + from sage.rings.function_field.function_field import FunctionField + if isinstance(x.parent(), FunctionField): + return True + return x.parent() in FunctionFields() def make_FunctionFieldElement(parent, element_class, representing_element): diff --git a/src/sage/rings/function_field/function_field.py b/src/sage/rings/function_field/function_field.py index 7c633aba808..401b2144be9 100644 --- a/src/sage/rings/function_field/function_field.py +++ b/src/sage/rings/function_field/function_field.py @@ -263,10 +263,17 @@ def is_FunctionField(x): sage: from sage.rings.function_field.function_field import is_FunctionField sage: is_FunctionField(QQ) + doctest:warning... + DeprecationWarning: The function is_FunctionField is deprecated; use '... in FunctionFields()' instead. + See https://github.com/sagemath/sage/issues/38289 for details. False sage: is_FunctionField(FunctionField(QQ, 't')) True """ + from sage.misc.superseded import deprecation + deprecation(38289, + "The function is_FunctionField is deprecated; " + "use '... in FunctionFields()' instead.") if isinstance(x, FunctionField): return True return x in FunctionFields() @@ -840,7 +847,7 @@ def _intermediate_fields(self, base): ... TypeError: base must be a function field """ - if not is_FunctionField(base): + if base not in FunctionFields(): raise TypeError("base must be a function field") ret = [self] diff --git a/src/sage/schemes/berkovich/berkovich_cp_element.py b/src/sage/schemes/berkovich/berkovich_cp_element.py index 1b25bc801d3..cf232a02a71 100755 --- a/src/sage/schemes/berkovich/berkovich_cp_element.py +++ b/src/sage/schemes/berkovich/berkovich_cp_element.py @@ -35,11 +35,12 @@ import sage.rings.abc +from sage.categories.function_fields import FunctionFields from sage.misc.lazy_import import lazy_import from sage.rings.infinity import Infinity from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.rings.real_mpfr import RR, RealNumber +from sage.rings.real_mpfr import RealNumber, RR from sage.schemes.projective.projective_point import SchemeMorphism_point_projective_field from sage.schemes.projective.projective_space import ProjectiveSpace from sage.structure.element import Element, Expression @@ -84,7 +85,6 @@ def __init__(self, parent, center, radius=None, power=None, prec=20, space_type= sage: B(4) Type I point centered at 4 + O(5^20) """ - from sage.rings.function_field.element import is_FunctionFieldElement from sage.rings.polynomial.polynomial_element import Polynomial from sage.rings.fraction_field_element import FractionFieldElement_1poly_field self._type = None @@ -109,8 +109,7 @@ def __init__(self, parent, center, radius=None, power=None, prec=20, space_type= if not error_check: return - # is_FunctionFieldElement calls .parent - elif hasattr(center, "parent") and hasattr(radius, 'parent'): + elif isinstance(center, Element) and isinstance(radius, Element): from sage.rings.polynomial.multi_polynomial import MPolynomial if isinstance(center, MPolynomial): try: @@ -119,10 +118,10 @@ def __init__(self, parent, center, radius=None, power=None, prec=20, space_type= raise TypeError('center was %s, a multivariable polynomial' % center) # check if the radius and the center are functions - center_func_check = is_FunctionFieldElement(center) or isinstance(center, Polynomial) or\ - isinstance(center, FractionFieldElement_1poly_field) or isinstance(center, Expression) - radius_func_check = is_FunctionFieldElement(radius) or isinstance(radius, Polynomial) or\ - isinstance(radius, FractionFieldElement_1poly_field) or isinstance(radius, Expression) + center_func_check = center.parent() in FunctionFields() or \ + isinstance(center, (Polynomial, FractionFieldElement_1poly_field, Expression)) + radius_func_check = radius.parent() in FunctionFields() or \ + isinstance(radius, (Polynomial, FractionFieldElement_1poly_field, Expression)) if center_func_check: # check that both center and radii are supported univariate function