From 452797a8413ca7eb2e48156157d42806a8274c21 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 25 May 2024 10:50:28 -0700 Subject: [PATCH 1/7] for a in "CLASS='ModularAbelianVariety';SUFFIX=_abstract" "CLASS='ArithmeticSubgroup|ModularFormsSpace|ModularSymbolsSpace';SUFFIX=" "CLASS='Gamma|Gamma0|Gamma1|GammaH|SL2Z|DirichletGroup';SUFFIX='_class'" "CLASS='CongruenceSubgroup';SUFFIX='Base'"; do eval "$a"; git --no-pager grep -l -E 'is_('$CLASS')' | xargs sed -E -i.bak 's/import is_('$CLASS')/import \1'$SUFFIX'/;/^ +/s/is_('$CLASS')[(]([^()]*([(][^()]*[)])?[^()]*)[)]/isinstance(\2, \1'$SUFFIX')/g'; done --- src/sage/matrix/matrix_space.py | 4 +- src/sage/modular/abvar/abvar.py | 60 +++++++++---------- .../modular/abvar/abvar_ambient_jacobian.py | 4 +- src/sage/modular/abvar/abvar_newform.py | 8 +-- src/sage/modular/abvar/constructor.py | 10 ++-- src/sage/modular/abvar/cuspidal_subgroup.py | 4 +- src/sage/modular/abvar/finite_subgroup.py | 12 ++-- src/sage/modular/abvar/homspace.py | 6 +- src/sage/modular/abvar/morphism.py | 8 +-- src/sage/modular/abvar/torsion_subgroup.py | 12 ++-- src/sage/modular/arithgroup/all.py | 4 +- .../modular/arithgroup/arithgroup_element.pyx | 4 +- .../modular/arithgroup/arithgroup_generic.py | 12 ++-- src/sage/modular/arithgroup/congroup_gamma.py | 8 +-- .../modular/arithgroup/congroup_gamma0.py | 14 ++--- .../modular/arithgroup/congroup_gamma1.py | 18 +++--- .../modular/arithgroup/congroup_gammaH.py | 16 ++--- .../modular/arithgroup/congroup_generic.py | 28 ++++----- src/sage/modular/arithgroup/congroup_sl2z.py | 6 +- src/sage/modular/arithgroup/farey_symbol.pyx | 16 ++--- src/sage/modular/cusps.py | 4 +- src/sage/modular/dims.py | 10 ++-- src/sage/modular/dirichlet.py | 8 +-- src/sage/modular/modform/ambient.py | 16 ++--- src/sage/modular/modform/constructor.py | 14 ++--- src/sage/modular/modform/element.py | 8 +-- src/sage/modular/modform/ring.py | 6 +- src/sage/modular/modform/space.py | 14 ++--- src/sage/modular/modsym/ambient.py | 8 +-- src/sage/modular/modsym/boundary.py | 4 +- src/sage/modular/modsym/modsym.py | 6 +- src/sage/modular/modsym/space.py | 6 +- src/sage/modular/overconvergent/genus0.py | 4 +- src/sage/modular/pollack_stevens/space.py | 6 +- src/sage/modular/quasimodform/element.py | 4 +- src/sage/modular/quasimodform/ring.py | 4 +- 36 files changed, 188 insertions(+), 188 deletions(-) diff --git a/src/sage/matrix/matrix_space.py b/src/sage/matrix/matrix_space.py index 54703de84c6..8b9c9b1725a 100644 --- a/src/sage/matrix/matrix_space.py +++ b/src/sage/matrix/matrix_space.py @@ -1462,11 +1462,11 @@ def _coerce_map_from_(self, S): return self.has_coerce_map_from(MS) try: - from sage.modular.arithgroup.arithgroup_generic import is_ArithmeticSubgroup + from sage.modular.arithgroup.arithgroup_generic import ArithmeticSubgroup except ImportError: pass else: - if is_ArithmeticSubgroup(S): + if isinstance(S, ArithmeticSubgroup): return self.has_coerce_map_from(MS) return False diff --git a/src/sage/modular/abvar/abvar.py b/src/sage/modular/abvar/abvar.py index 7b5a067af1f..a1780d9780f 100644 --- a/src/sage/modular/abvar/abvar.py +++ b/src/sage/modular/abvar/abvar.py @@ -43,10 +43,10 @@ from sage.matrix.special import block_diagonal_matrix, identity_matrix from sage.misc.lazy_import import lazy_import from sage.misc.misc_c import prod -from sage.modular.arithgroup.congroup_gamma0 import is_Gamma0 -from sage.modular.arithgroup.congroup_gamma1 import is_Gamma1 -from sage.modular.arithgroup.congroup_gammaH import is_GammaH -from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup +from sage.modular.arithgroup.congroup_gamma0 import Gamma0_class +from sage.modular.arithgroup.congroup_gamma1 import Gamma1_class +from sage.modular.arithgroup.congroup_gammaH import GammaH_class +from sage.modular.arithgroup.congroup_generic import CongruenceSubgroupBase from sage.modular.modform.constructor import Newform from sage.modular.modsym.modsym import ModularSymbols from sage.modular.modsym.space import ModularSymbolsSpace @@ -89,16 +89,16 @@ def is_ModularAbelianVariety(x) -> bool: EXAMPLES:: - sage: from sage.modular.abvar.abvar import is_ModularAbelianVariety - sage: is_ModularAbelianVariety(5) + sage: from sage.modular.abvar.abvar import ModularAbelianVariety_abstract + sage: isinstance(5, ModularAbelianVariety_abstract) False - sage: is_ModularAbelianVariety(J0(37)) + sage: isinstance(J0(37), ModularAbelianVariety_abstract) True Returning True is a statement about the data type not whether or not some abelian variety is modular:: - sage: is_ModularAbelianVariety(EllipticCurve('37a')) + sage: isinstance(EllipticCurve('37a'), ModularAbelianVariety_abstract) False """ return isinstance(x, ModularAbelianVariety_abstract) @@ -161,7 +161,7 @@ def __init__(self, groups, base_field, is_simple=None, newform_level=None, if not isinstance(groups, tuple): raise TypeError("groups must be a tuple") for G in groups: - if not is_CongruenceSubgroup(G): + if not isinstance(G, CongruenceSubgroupBase): raise TypeError("each element of groups must be a congruence subgroup") self.__groups = groups if is_simple is not None: @@ -215,7 +215,7 @@ def is_J0(self) -> bool: sage: (J0(23) * J0(21)).is_J0() False """ - return len(self.groups()) == 1 and is_Gamma0(self.groups()[0]) \ + return len(self.groups()) == 1 and isinstance(self.groups()[0], Gamma0_class) \ and self.is_ambient() def is_J1(self) -> bool: @@ -237,7 +237,7 @@ def is_J1(self) -> bool: sage: J1(23)[0].is_J1() False """ - return len(self.groups()) == 1 and is_Gamma1(self.groups()[0]) \ + return len(self.groups()) == 1 and isinstance(self.groups()[0], Gamma1_class) \ and self.is_ambient() ########################################################################## @@ -605,11 +605,11 @@ def newform_label(self): ValueError: self must be simple """ N, G = self.newform_level() - if is_Gamma0(G): + if isinstance(G, Gamma0_class): group = '' - elif is_Gamma1(G): + elif isinstance(G, Gamma1_class): group = 'G1' - elif is_GammaH(G): + elif isinstance(G, GammaH_class): group = 'GH%s' % (str(G._generators_for_H()).replace(' ', '')) return '%s%s%s' % (N, cremona_letter_code(self.isogeny_number()), group) @@ -765,7 +765,7 @@ def _simple_isogeny(self, other): ... NotImplementedError: _simple_isogeny only implemented when both abelian variety have the same ambient product Jacobian """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): raise TypeError("other must be a modular abelian variety") if not self.is_simple(): @@ -832,7 +832,7 @@ def in_same_ambient_variety(self, other): sage: A.in_same_ambient_variety(J0(11)) False """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): return False if self.groups() != other.groups(): return False @@ -1083,7 +1083,7 @@ def __add__(self, other): sage: A+B # long time Abelian subvariety of dimension 20 of J0(206) """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): if other == 0: return self raise TypeError("other must be a modular abelian variety") @@ -1172,7 +1172,7 @@ def __mul__(self, other): sage: d[0] * d[1] * J0(11) Abelian subvariety of dimension 4 of J0(65) x J0(65) x J0(11) """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): raise TypeError("other must be a modular abelian variety") if other.base_ring() != self.base_ring(): raise TypeError("self and other must have the same base ring") @@ -1968,7 +1968,7 @@ def is_subvariety(self, other) -> bool: sage: A.is_subvariety(J) True """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): return False if self is other: return True @@ -2104,11 +2104,11 @@ def _ambient_repr(self): """ v = [] for G in self.groups(): - if is_Gamma0(G): + if isinstance(G, Gamma0_class): v.append('J0(%s)' % G.level()) - elif is_Gamma1(G): + elif isinstance(G, Gamma1_class): v.append('J1(%s)' % G.level()) - elif is_GammaH(G): + elif isinstance(G, GammaH_class): v.append('JH(%s,%s)' % (G.level(), G._generators_for_H())) return ' x '.join(v) @@ -2125,11 +2125,11 @@ def _ambient_latex_repr(self): """ v = [] for G in self.groups(): - if is_Gamma0(G): + if isinstance(G, Gamma0_class): v.append('J_0(%s)' % G.level()) - elif is_Gamma1(G): + elif isinstance(G, Gamma1_class): v.append('J_1(%s)' % G.level()) - elif is_GammaH(G): + elif isinstance(G, GammaH_class): v.append('J_H(%s,%s)' % (G.level(), G._generators_for_H())) return ' \\times '.join(v) @@ -4099,7 +4099,7 @@ def __add__(self, other): sage: sum(D, D[0]) == A True """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): if other == 0: return self raise TypeError("sum not defined") @@ -4397,7 +4397,7 @@ def is_subvariety(self, other): sage: D[2].is_subvariety(D[0] + D[1]) False """ - if not is_ModularAbelianVariety(other): + if not isinstance(other, ModularAbelianVariety_abstract): return False if not isinstance(other, ModularAbelianVariety_modsym_abstract): return ModularAbelianVariety_abstract.is_subvariety(self, other) @@ -4695,7 +4695,7 @@ def component_group_order(self, p): self.__component_group[p] = (one, one, one) return one # Cases that we don't know how to handle yet. - if not is_Gamma0(self.group()): + if not isinstance(self.group(), Gamma0_class): raise NotImplementedError("computation of component group not implemented when group isn't Gamma0") if self.level() % (p * p) == 0: raise NotImplementedError("computation of component group not implemented when p^2 divides the level") @@ -4879,7 +4879,7 @@ def tamagawa_number_bounds(self, p): mul = 1 elif N.valuation(p) == 1: M = self.modular_symbols(sign=1) - if is_Gamma0(M.group()): + if isinstance(M.group(), Gamma0_class): g = self.component_group_order(p) W = M.atkin_lehner_operator(p).matrix() if W == -1: @@ -4941,7 +4941,7 @@ def brandt_module(self, p): except KeyError: pass p = Integer(p) - if not is_Gamma0(self.group()): + if not isinstance(self.group(), Gamma0_class): raise NotImplementedError("Brandt module only defined on Gamma0") if not p.is_prime(): raise ValueError("p must be a prime integer") diff --git a/src/sage/modular/abvar/abvar_ambient_jacobian.py b/src/sage/modular/abvar/abvar_ambient_jacobian.py index 32a006b3729..6af8091ed7e 100644 --- a/src/sage/modular/abvar/abvar_ambient_jacobian.py +++ b/src/sage/modular/abvar/abvar_ambient_jacobian.py @@ -19,7 +19,7 @@ from sage.modular.modsym.modsym import ModularSymbols from sage.modular.modform.constructor import Newforms -from sage.modular.arithgroup.all import is_Gamma0, is_Gamma1 +from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1 from . import morphism @@ -414,7 +414,7 @@ def newform_decomposition(self, names=None): if self.dimension() == 0: return [] G = self.group() - if not (is_Gamma0(G) or is_Gamma1(G)): + if not (isinstance(G, Gamma0_class) or isinstance(G, Gamma1_class)): return [S.newform(names=names) for S in self.decomposition()] Gtype = G.parent() N = G.level() diff --git a/src/sage/modular/abvar/abvar_newform.py b/src/sage/modular/abvar/abvar_newform.py index 5d4976d5d54..31c5709ad10 100644 --- a/src/sage/modular/abvar/abvar_newform.py +++ b/src/sage/modular/abvar/abvar_newform.py @@ -19,7 +19,7 @@ from sage.rings.rational_field import QQ from sage.modular.modform.element import Newform -from sage.modular.arithgroup.all import is_Gamma0, is_Gamma1, is_GammaH +from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1, is_GammaH from .abvar import ModularAbelianVariety_modsym_abstract from . import homspace @@ -134,11 +134,11 @@ def label(self) -> str: '43b' """ G = self.__f.group() - if is_Gamma0(G): + if isinstance(G, Gamma0_class): group = '' - elif is_Gamma1(G): + elif isinstance(G, Gamma1_class): group = 'G1' - elif is_GammaH(G): + elif isinstance(G, GammaH_class): group = 'GH[' + ','.join(str(z) for z in G._generators_for_H()) + ']' return '%s%s%s' % (self.level(), cremona_letter_code(self.factor_number()), group) diff --git a/src/sage/modular/abvar/constructor.py b/src/sage/modular/abvar/constructor.py index 5dd6a77b4ca..84aa55a1e94 100644 --- a/src/sage/modular/abvar/constructor.py +++ b/src/sage/modular/abvar/constructor.py @@ -15,8 +15,8 @@ from sage.rings.integer import Integer -from sage.modular.arithgroup.all import is_CongruenceSubgroup, Gamma0 -from sage.modular.modsym.space import is_ModularSymbolsSpace +from sage.modular.arithgroup.all import CongruenceSubgroupBase, Gamma0 +from sage.modular.modsym.space import ModularSymbolsSpace from .abvar_newform import ModularAbelianVariety_newform import sage.modular.modform.element from . import abvar @@ -172,7 +172,7 @@ def AbelianVariety(X): """ if isinstance(X, (int, Integer)): X = Gamma0(X) - if is_CongruenceSubgroup(X): + if isinstance(X, CongruenceSubgroupBase): X = X.modular_symbols().cuspidal_submodule() elif isinstance(X, str): from sage.modular.modform.constructor import Newform @@ -181,10 +181,10 @@ def AbelianVariety(X): elif isinstance(X, sage.modular.modform.element.Newform): return ModularAbelianVariety_newform(X) - if is_ModularSymbolsSpace(X): + if isinstance(X, ModularSymbolsSpace): return abvar.ModularAbelianVariety_modsym(X) - if isinstance(X, (tuple,list)) and all(is_CongruenceSubgroup(G) for G in X): + if isinstance(X, (tuple,list)) and all(isinstance(G, CongruenceSubgroupBase) for G in X): return abvar.ModularAbelianVariety(X) raise TypeError("X must be an integer, string, newform, modsym space, congruence subgroup or tuple of congruence subgroups") diff --git a/src/sage/modular/abvar/cuspidal_subgroup.py b/src/sage/modular/abvar/cuspidal_subgroup.py index 82e373ad716..c2719b24a5c 100644 --- a/src/sage/modular/abvar/cuspidal_subgroup.py +++ b/src/sage/modular/abvar/cuspidal_subgroup.py @@ -70,7 +70,7 @@ #***************************************************************************** from sage.matrix.constructor import matrix -from sage.modular.arithgroup.all import is_Gamma0 +from sage.modular.arithgroup.all import Gamma0_class from sage.modular.cusps import Cusp from sage.rings.infinity import infinity from sage.rings.integer_ring import ZZ @@ -172,7 +172,7 @@ def _compute_lattice(self, rational_only=False, rational_subgroup=False): if rational_only: # subgroup generated by differences of rational cusps - if not is_Gamma0(A.group()): + if not isinstance(A.group(), Gamma0_class): raise NotImplementedError('computation of rational cusps only implemented in Gamma0 case.') if not N.is_squarefree(): data = [n for n in N.coprime_integers(N) if n >= 2] diff --git a/src/sage/modular/abvar/finite_subgroup.py b/src/sage/modular/abvar/finite_subgroup.py index 00aa5afa414..0206ef1cf72 100644 --- a/src/sage/modular/abvar/finite_subgroup.py +++ b/src/sage/modular/abvar/finite_subgroup.py @@ -157,10 +157,10 @@ def __init__(self, abvar, field_of_definition=QQ): from sage.categories.fields import Fields from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.categories.modules import Modules - from .abvar import is_ModularAbelianVariety + from .abvar import ModularAbelianVariety_abstract if field_of_definition not in Fields(): raise TypeError("field_of_definition must be a field") - if not is_ModularAbelianVariety(abvar): + if not isinstance(abvar, ModularAbelianVariety_abstract): raise TypeError("abvar must be a modular abelian variety") category = Category.join((Modules(ZZ), FiniteEnumeratedSets())) Module.__init__(self, ZZ, category=category) @@ -410,9 +410,9 @@ def intersection(self, other): Finite subgroup with invariants [3, 3] over QQ of Abelian subvariety of dimension 2 of J0(33) """ - from .abvar import is_ModularAbelianVariety + from .abvar import ModularAbelianVariety_abstract A = self.abelian_variety() - if is_ModularAbelianVariety(other): + if isinstance(other, ModularAbelianVariety_abstract): amb = other B = other M = B.lattice().scale(Integer(1)/self.exponent()) @@ -870,10 +870,10 @@ def __init__(self, abvar, lattice, field_of_definition=None, check=True): if field_of_definition is None: from sage.rings.qqbar import QQbar as field_of_definition if check: - from .abvar import is_ModularAbelianVariety + from .abvar import ModularAbelianVariety_abstract if not isinstance(lattice, FreeModule_generic) or lattice.base_ring() != ZZ: raise TypeError("lattice must be a free module over ZZ") - if not is_ModularAbelianVariety(abvar): + if not isinstance(abvar, ModularAbelianVariety_abstract): raise TypeError("abvar must be a modular abelian variety") if not abvar.lattice().is_submodule(lattice): lattice += abvar.lattice() diff --git a/src/sage/modular/abvar/homspace.py b/src/sage/modular/abvar/homspace.py index e914e11cc8e..fcc3eac5cde 100644 --- a/src/sage/modular/abvar/homspace.py +++ b/src/sage/modular/abvar/homspace.py @@ -228,10 +228,10 @@ def __init__(self, domain, codomain, cat): sage: H.homset_category() Category of modular abelian varieties over Rational Field """ - from .abvar import is_ModularAbelianVariety - if not is_ModularAbelianVariety(domain): + from .abvar import ModularAbelianVariety_abstract + if not isinstance(domain, ModularAbelianVariety_abstract): raise TypeError("domain must be a modular abelian variety") - if not is_ModularAbelianVariety(codomain): + if not isinstance(codomain, ModularAbelianVariety_abstract): raise TypeError("codomain must be a modular abelian variety") self._gens = None HomsetWithBase.__init__(self, domain, codomain, category=cat) diff --git a/src/sage/modular/abvar/morphism.py b/src/sage/modular/abvar/morphism.py index d0eae78b6ed..caa7c2b0fc5 100644 --- a/src/sage/modular/abvar/morphism.py +++ b/src/sage/modular/abvar/morphism.py @@ -446,11 +446,11 @@ def __call__(self, X): sage: t2(C) Finite subgroup with invariants [2, 2] over QQ of Simple abelian subvariety 33a(1,33) of dimension 1 of J0(33) """ - from .abvar import is_ModularAbelianVariety + from .abvar import ModularAbelianVariety_abstract from .finite_subgroup import FiniteSubgroup if isinstance(X, TorsionPoint): return self._image_of_element(X) - elif is_ModularAbelianVariety(X): + elif isinstance(X, ModularAbelianVariety_abstract): return self._image_of_abvar(X) elif isinstance(X, FiniteSubgroup): return self._image_of_finite_subgroup(X) @@ -743,11 +743,11 @@ def __init__(self, abvar, n, side="left"): sage: T2.parent() Endomorphism ring of Abelian variety J0(37) of dimension 2 """ - from .abvar import is_ModularAbelianVariety + from .abvar import ModularAbelianVariety_abstract n = ZZ(n) if n <= 0: raise ValueError("n must be positive") - if not is_ModularAbelianVariety(abvar): + if not isinstance(abvar, ModularAbelianVariety_abstract): raise TypeError("abvar must be a modular abelian variety") self.__abvar = abvar self.__n = n diff --git a/src/sage/modular/abvar/torsion_subgroup.py b/src/sage/modular/abvar/torsion_subgroup.py index 5993a611355..66755a6bcc7 100644 --- a/src/sage/modular/abvar/torsion_subgroup.py +++ b/src/sage/modular/abvar/torsion_subgroup.py @@ -92,7 +92,7 @@ from sage.arith.misc import divisors, gcd from sage.misc.misc_c import prod from sage.modular.abvar.torsion_point import TorsionPoint -from sage.modular.arithgroup.all import is_Gamma0, is_Gamma1 +from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1 from sage.modular.dirichlet import DirichletGroup from sage.modules.module import Module from sage.rings.fast_arith import prime_range @@ -400,7 +400,7 @@ def divisor_of_order(self): return self._divisor_of_order # The Gamma0 case - if all(is_Gamma0(G) for G in A.groups()): + if all(isinstance(G, Gamma0_class) for G in A.groups()): self._divisor_of_order = A.rational_cuspidal_subgroup().order() return self._divisor_of_order @@ -477,7 +477,7 @@ def multiple_of_order(self, maxp=None, proof=True): return self._multiple_of_order_proof_false # The Gamma0 and Gamma1 case - if all((is_Gamma0(G) or is_Gamma1(G) for G in A.groups())): + if all((isinstance(G, Gamma0_class) or isinstance(G, Gamma1_class) for G in A.groups())): self._multiple_of_order = self.multiple_of_order_using_frobp() return self._multiple_of_order @@ -580,7 +580,7 @@ def multiple_of_order_using_frobp(self, maxp=None): T = ZZ(1) self.__multiple_of_order_using_frobp = T return T - if not all((is_Gamma0(G) or is_Gamma1(G) for G in A.groups())): + if not all((isinstance(G, Gamma0_class) or isinstance(G, Gamma1_class) for G in A.groups())): raise NotImplementedError("torsion multiple only implemented for Gamma0 and Gamma1") bnd = ZZ(0) @@ -594,7 +594,7 @@ def multiple_of_order_using_frobp(self, maxp=None): if (2*N) % p == 0: continue - if (len(A.groups()) == 1 and is_Gamma0(A.groups()[0])): + if (len(A.groups()) == 1 and isinstance(A.groups()[0], Gamma0_class)): f = A.hecke_polynomial(p) b = ZZ(f(p+1)) else: @@ -604,7 +604,7 @@ def multiple_of_order_using_frobp(self, maxp=None): b = 1 for simple in D: G = simple.newform_level()[1] - if is_Gamma0(G): + if isinstance(G, Gamma0_class): f = simple.hecke_polynomial(p) b *= ZZ(f(p+1)) else: diff --git a/src/sage/modular/arithgroup/all.py b/src/sage/modular/arithgroup/all.py index 2915566b73c..ffe50b12044 100644 --- a/src/sage/modular/arithgroup/all.py +++ b/src/sage/modular/arithgroup/all.py @@ -1,8 +1,8 @@ # Note: the is_xxx functions are imported to here, but not from here up to sage.modular.all, so # they are invisible to the user but easy to import all in one go by other code that needs them. -from sage.modular.arithgroup.arithgroup_generic import is_ArithmeticSubgroup -from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup, CongruenceSubgroup_constructor as CongruenceSubgroup +from sage.modular.arithgroup.arithgroup_generic import ArithmeticSubgroup +from sage.modular.arithgroup.congroup_generic import CongruenceSubgroupBase, CongruenceSubgroup_constructor as CongruenceSubgroup from sage.modular.arithgroup.congroup_gammaH import GammaH_constructor as GammaH, is_GammaH from sage.modular.arithgroup.congroup_gamma1 import Gamma1_constructor as Gamma1, is_Gamma1 from sage.modular.arithgroup.congroup_gamma0 import Gamma0_constructor as Gamma0, is_Gamma0 diff --git a/src/sage/modular/arithgroup/arithgroup_element.pyx b/src/sage/modular/arithgroup/arithgroup_element.pyx index 9ab2a274e2b..6bcd2c58550 100644 --- a/src/sage/modular/arithgroup/arithgroup_element.pyx +++ b/src/sage/modular/arithgroup/arithgroup_element.pyx @@ -77,8 +77,8 @@ cdef class ArithmeticSubgroupElement(MultiplicativeGroupElement): True """ if check: - from .arithgroup_generic import is_ArithmeticSubgroup - if not is_ArithmeticSubgroup(parent): + from .arithgroup_generic import ArithmeticSubgroup + if not isinstance(parent, ArithmeticSubgroup): raise TypeError("parent (= %s) must be an arithmetic subgroup" % parent) x = M2Z(x, copy=True, coerce=True) diff --git a/src/sage/modular/arithgroup/arithgroup_generic.py b/src/sage/modular/arithgroup/arithgroup_generic.py index 105eaed623b..0efe60e6da4 100644 --- a/src/sage/modular/arithgroup/arithgroup_generic.py +++ b/src/sage/modular/arithgroup/arithgroup_generic.py @@ -36,10 +36,10 @@ def is_ArithmeticSubgroup(x) -> bool: EXAMPLES:: - sage: from sage.modular.arithgroup.all import is_ArithmeticSubgroup + sage: from sage.modular.arithgroup.all import ArithmeticSubgroup sage: is_ArithmeticSubgroup(GL(2, GF(7))) False - sage: is_ArithmeticSubgroup(Gamma0(4)) + sage: isinstance(Gamma0(4), ArithmeticSubgroup) True """ return isinstance(x, ArithmeticSubgroup) @@ -457,7 +457,7 @@ def nu2(self): # then self has no elliptic points either. from .all import Gamma0, is_CongruenceSubgroup - if is_CongruenceSubgroup(self): + if isinstance(self, CongruenceSubgroupBase): if self.is_subgroup(Gamma0(self.level())) and Gamma0(self.level()).nu2() == 0: return 0 @@ -497,7 +497,7 @@ def nu3(self): # then self has no elliptic points either. from .all import Gamma0, is_CongruenceSubgroup - if is_CongruenceSubgroup(self): + if isinstance(self, CongruenceSubgroupBase): if self.is_subgroup(Gamma0(self.level())) and Gamma0(self.level()).nu3() == 0: return 0 @@ -713,9 +713,9 @@ def cusps(self, algorithm='default'): except (AttributeError, KeyError): self._cusp_list = {} - from .congroup_sl2z import is_SL2Z + from .congroup_sl2z import SL2Z_class if algorithm == 'default': - if is_SL2Z(self): + if isinstance(self, SL2Z_class): s = [Cusp(1, 0)] else: s = self._find_cusps() diff --git a/src/sage/modular/arithgroup/congroup_gamma.py b/src/sage/modular/arithgroup/congroup_gamma.py index fee74dcce8e..a06e84d5eb5 100644 --- a/src/sage/modular/arithgroup/congroup_gamma.py +++ b/src/sage/modular/arithgroup/congroup_gamma.py @@ -116,7 +116,7 @@ def __richcmp__(self, other, op): sage: Gamma(3) == Gamma(3).as_permutation_group() # needs sage.groups True """ - if is_Gamma(other): + if isinstance(other, Gamma_class): return richcmp(self.level(), other.level(), op) else: return NotImplemented @@ -313,10 +313,10 @@ def is_Gamma(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import is_Gamma - sage: is_Gamma(Gamma0(13)) + sage: from sage.modular.arithgroup.all import Gamma_class + sage: isinstance(Gamma0(13), Gamma_class) False - sage: is_Gamma(Gamma(4)) + sage: isinstance(Gamma(4), Gamma_class) True """ diff --git a/src/sage/modular/arithgroup/congroup_gamma0.py b/src/sage/modular/arithgroup/congroup_gamma0.py index aecf1582f98..3de50ffeead 100644 --- a/src/sage/modular/arithgroup/congroup_gamma0.py +++ b/src/sage/modular/arithgroup/congroup_gamma0.py @@ -19,7 +19,7 @@ from sage.rings.finite_rings.integer_mod_ring import IntegerModRing from sage.rings.integer_ring import ZZ -from .congroup_gamma1 import is_Gamma1 +from .congroup_gamma1 import Gamma1_class from .congroup_gammaH import GammaH_class from .congroup_generic import CongruenceSubgroup @@ -30,12 +30,12 @@ def is_Gamma0(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import is_Gamma0 - sage: is_Gamma0(SL2Z) + sage: from sage.modular.arithgroup.all import Gamma0_class + sage: isinstance(SL2Z, Gamma0_class) True - sage: is_Gamma0(Gamma0(13)) + sage: isinstance(Gamma0(13), Gamma0_class) True - sage: is_Gamma0(Gamma1(6)) + sage: isinstance(Gamma1(6), Gamma0_class) False """ return isinstance(x, Gamma0_class) @@ -280,9 +280,9 @@ def is_subgroup(self, right): """ if right.level() == 1: return True - if is_Gamma0(right): + if isinstance(right, Gamma0_class): return self.level() % right.level() == 0 - if is_Gamma1(right): + if isinstance(right, Gamma1_class): if right.level() >= 3: return False elif right.level() == 2: diff --git a/src/sage/modular/arithgroup/congroup_gamma1.py b/src/sage/modular/arithgroup/congroup_gamma1.py index 0e417904b0e..7987ab40bf3 100644 --- a/src/sage/modular/arithgroup/congroup_gamma1.py +++ b/src/sage/modular/arithgroup/congroup_gamma1.py @@ -27,20 +27,20 @@ def is_Gamma1(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import is_Gamma1 - sage: is_Gamma1(SL2Z) + sage: from sage.modular.arithgroup.all import Gamma1_class + sage: isinstance(SL2Z, Gamma1_class) False - sage: is_Gamma1(Gamma1(13)) + sage: isinstance(Gamma1(13), Gamma1_class) True - sage: is_Gamma1(Gamma0(6)) + sage: isinstance(Gamma0(6), Gamma1_class) False - sage: is_Gamma1(GammaH(12, [])) # trick question! + sage: isinstance(GammaH(12, []), Gamma1_class) # trick question! True - sage: is_Gamma1(GammaH(12, [5])) + sage: isinstance(GammaH(12, [5]), Gamma1_class) False """ - #from congroup_sl2z import is_SL2Z - #return (isinstance(x, Gamma1_class) or is_SL2Z(x)) + #from congroup_sl2z import SL2Z_class + #return (isinstance(x, Gamma1_class) or isinstance(x, SL2Z_class)) return isinstance(x, Gamma1_class) @@ -181,7 +181,7 @@ def is_subgroup(self, right): """ if right.level() == 1: return True - if is_GammaH(right): + if isinstance(right, GammaH_class): return self.level() % right.level() == 0 else: raise NotImplementedError diff --git a/src/sage/modular/arithgroup/congroup_gammaH.py b/src/sage/modular/arithgroup/congroup_gammaH.py index 0b97c83ecf7..e2c7c8d82ab 100644 --- a/src/sage/modular/arithgroup/congroup_gammaH.py +++ b/src/sage/modular/arithgroup/congroup_gammaH.py @@ -98,14 +98,14 @@ def is_GammaH(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import is_GammaH - sage: is_GammaH(GammaH(13, [2])) + sage: from sage.modular.arithgroup.all import GammaH_class + sage: isinstance(GammaH(13, [2]), GammaH_class) True - sage: is_GammaH(Gamma0(6)) + sage: isinstance(Gamma0(6), GammaH_class) True - sage: is_GammaH(Gamma1(6)) + sage: isinstance(Gamma1(6), GammaH_class) True - sage: is_GammaH(sage.modular.arithgroup.congroup_generic.CongruenceSubgroup(5)) + sage: isinstance(sage.modular.arithgroup.congroup_generic.CongruenceSubgroup(5), GammaH_class) False """ return isinstance(x, GammaH_class) @@ -1026,7 +1026,7 @@ def is_subgroup(self, other): True """ - from .all import is_Gamma0, is_Gamma1 + from .all import Gamma0_class, is_Gamma1 if not isinstance(other, GammaH_class): raise NotImplementedError @@ -1035,10 +1035,10 @@ def is_subgroup(self, other): return False # easy cases - if is_Gamma0(other): + if isinstance(other, Gamma0_class): return True # recall self is a GammaH, so it's contained in Gamma0 - if is_Gamma1(other) and len(self._generators_for_H()) > 0: + if isinstance(other, Gamma1_class) and len(self._generators_for_H()) > 0: return False else: diff --git a/src/sage/modular/arithgroup/congroup_generic.py b/src/sage/modular/arithgroup/congroup_generic.py index 871275fdced..3e82d8e86d1 100644 --- a/src/sage/modular/arithgroup/congroup_generic.py +++ b/src/sage/modular/arithgroup/congroup_generic.py @@ -126,20 +126,20 @@ def is_CongruenceSubgroup(x): EXAMPLES:: - sage: from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup - sage: is_CongruenceSubgroup(SL2Z) + sage: from sage.modular.arithgroup.congroup_generic import CongruenceSubgroupBase + sage: isinstance(SL2Z, CongruenceSubgroupBase) True - sage: is_CongruenceSubgroup(Gamma0(13)) + sage: isinstance(Gamma0(13), CongruenceSubgroupBase) True - sage: is_CongruenceSubgroup(Gamma1(6)) + sage: isinstance(Gamma1(6), CongruenceSubgroupBase) True - sage: is_CongruenceSubgroup(GammaH(11, [3])) + sage: isinstance(GammaH(11, [3]), CongruenceSubgroupBase) True - sage: G = ArithmeticSubgroup_Permutation(L = "(1, 2)", R = "(1, 2)"); is_CongruenceSubgroup(G) + sage: G = ArithmeticSubgroup_Permutation(L = "(1, 2)", R = "(1, 2)"); isinstance(G, CongruenceSubgroupBase) False sage: G.is_congruence() True - sage: is_CongruenceSubgroup(SymmetricGroup(3)) + sage: isinstance(SymmetricGroup(3), CongruenceSubgroupBase) False """ return isinstance(x, CongruenceSubgroupBase) @@ -227,7 +227,7 @@ def __eq__(self, other): if not isinstance(other, ArithmeticSubgroup): return False - elif is_CongruenceSubgroup(other): + elif isinstance(other, CongruenceSubgroupBase): if self.level() == other.level() == 1: return True # shouldn't come up except with pickling/unpickling @@ -540,18 +540,18 @@ def _new_group_from_level(self, level): sage: G._new_group_from_level(100) Congruence Subgroup Gamma_H(100) with H generated by [7, 57] """ - from .congroup_gamma0 import is_Gamma0 - from .congroup_gamma1 import is_Gamma1 - from .congroup_gammaH import is_GammaH + from .congroup_gamma0 import Gamma0_class + from .congroup_gamma1 import Gamma1_class + from .congroup_gammaH import GammaH_class from .all import Gamma0, Gamma1, GammaH N = self.level() if (level % N) and (N % level): raise ValueError("one level must divide the other") - if is_Gamma0(self): + if isinstance(self, Gamma0_class): return Gamma0(level) - elif is_Gamma1(self): + elif isinstance(self, Gamma1_class): return Gamma1(level) - elif is_GammaH(self): + elif isinstance(self, GammaH_class): H = self._generators_for_H() if level > N: d = level // N diff --git a/src/sage/modular/arithgroup/congroup_sl2z.py b/src/sage/modular/arithgroup/congroup_sl2z.py index d870f207b38..b62bfc3b42b 100644 --- a/src/sage/modular/arithgroup/congroup_sl2z.py +++ b/src/sage/modular/arithgroup/congroup_sl2z.py @@ -34,10 +34,10 @@ def is_SL2Z(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import is_SL2Z - sage: is_SL2Z(SL2Z) + sage: from sage.modular.arithgroup.all import SL2Z_class + sage: isinstance(SL2Z, SL2Z_class) True - sage: is_SL2Z(Gamma0(6)) + sage: isinstance(Gamma0(6), SL2Z_class) False """ return isinstance(x, SL2Z_class) diff --git a/src/sage/modular/arithgroup/farey_symbol.pyx b/src/sage/modular/arithgroup/farey_symbol.pyx index c9cc8059c65..d85b82b93f3 100644 --- a/src/sage/modular/arithgroup/farey_symbol.pyx +++ b/src/sage/modular/arithgroup/farey_symbol.pyx @@ -33,10 +33,10 @@ from sage.rings.real_mpfr import RR from sage.rings.cc import CC from sage.rings.integer cimport Integer from sage.rings.infinity import infinity -from .congroup_gammaH import is_GammaH -from .congroup_gamma1 import is_Gamma1 -from .congroup_gamma0 import is_Gamma0 -from .congroup_gamma import is_Gamma +from .congroup_gammaH import GammaH_class +from .congroup_gamma1 import Gamma1_class +from .congroup_gamma0 import Gamma0_class +from .congroup_gamma import Gamma_class from .congroup_sl2z import SL2Z from sage.modular.cusps import Cusp @@ -218,19 +218,19 @@ cdef class Farey: sig_on() self.this_ptr = new cpp_farey() sig_off() - elif is_Gamma0(group): + elif isinstance(group, Gamma0_class): sig_on() self.this_ptr = new cpp_farey(group, new is_element_Gamma0(p)) sig_off() - elif is_Gamma1(group): + elif isinstance(group, Gamma1_class): sig_on() self.this_ptr = new cpp_farey(group, new is_element_Gamma1(p)) sig_off() - elif is_Gamma(group): + elif isinstance(group, Gamma_class): sig_on() self.this_ptr = new cpp_farey(group, new is_element_Gamma(p)) sig_off() - elif is_GammaH(group): + elif isinstance(group, GammaH_class): sig_on() l = group._GammaH_class__H self.this_ptr = new cpp_farey(group, new is_element_GammaH(p, l)) diff --git a/src/sage/modular/cusps.py b/src/sage/modular/cusps.py index 263eb61308a..abdb02ed6d4 100644 --- a/src/sage/modular/cusps.py +++ b/src/sage/modular/cusps.py @@ -782,10 +782,10 @@ def is_gamma_h_equiv(self, other, G): sage: G.dimension_cusp_forms(2) 0 """ - from sage.modular.arithgroup.all import is_GammaH + from sage.modular.arithgroup.all import GammaH_class if not isinstance(other, Cusp): other = Cusp(other) - if not is_GammaH(G): + if not isinstance(G, GammaH_class): raise TypeError("G must be a group GammaH(N).") H = G._list_of_elements_in_H() diff --git a/src/sage/modular/dims.py b/src/sage/modular/dims.py index b8b83e87b57..a68a335568c 100644 --- a/src/sage/modular/dims.py +++ b/src/sage/modular/dims.py @@ -298,7 +298,7 @@ def dimension_new_cusp_forms(X, k=2, p=0): sage: dimension_new_cusp_forms(DirichletGroup(2)(1), 24) 1 """ - if is_GammaH(X): + if isinstance(X, GammaH_class): return X.dimension_new_cusp_forms(k, p=p) elif isinstance(X, dirichlet.DirichletCharacter): N = X.modulus() @@ -401,7 +401,7 @@ def dimension_cusp_forms(X, k=2): return Gamma0(N).dimension_cusp_forms(k) else: return Gamma1(N).dimension_cusp_forms(k, X) - elif is_ArithmeticSubgroup(X): + elif isinstance(X, ArithmeticSubgroup): return X.dimension_cusp_forms(k) elif isinstance(X, (int, Integer)): return Gamma0(X).dimension_cusp_forms(k) @@ -471,7 +471,7 @@ def dimension_eis(X, k=2): sage: dimension_modular_forms(Gamma1(4), 11) 6 """ - if is_ArithmeticSubgroup(X): + if isinstance(X, ArithmeticSubgroup): return X.dimension_eis(k) elif isinstance(X, dirichlet.DirichletCharacter): return Gamma1(X.modulus()).dimension_eis(k, X) @@ -521,7 +521,7 @@ def dimension_modular_forms(X, k=2): """ if isinstance(X, (int, Integer)): return Gamma0(X).dimension_modular_forms(k) - elif is_ArithmeticSubgroup(X): + elif isinstance(X, ArithmeticSubgroup): return X.dimension_modular_forms(k) elif isinstance(X, dirichlet.DirichletCharacter): return Gamma1(X.modulus()).dimension_modular_forms(k, eps=X) @@ -560,7 +560,7 @@ def sturm_bound(level, weight=2): sage: sturm_bound(11) 2 """ - if is_ArithmeticSubgroup(level): + if isinstance(level, ArithmeticSubgroup): if level.is_congruence(): return level.sturm_bound(weight) raise ValueError("no Sturm bound defined for noncongruence subgroups") diff --git a/src/sage/modular/dirichlet.py b/src/sage/modular/dirichlet.py index 3f871dadf91..e3de858771d 100644 --- a/src/sage/modular/dirichlet.py +++ b/src/sage/modular/dirichlet.py @@ -2573,12 +2573,12 @@ def is_DirichletGroup(x): EXAMPLES:: - sage: from sage.modular.dirichlet import is_DirichletGroup - sage: is_DirichletGroup(DirichletGroup(11)) + sage: from sage.modular.dirichlet import DirichletGroup_class + sage: isinstance(DirichletGroup(11), DirichletGroup_class) True - sage: is_DirichletGroup(11) + sage: isinstance(11, DirichletGroup_class) False - sage: is_DirichletGroup(DirichletGroup(11).0) + sage: isinstance(DirichletGroup(11).0, DirichletGroup_class) False """ return isinstance(x, DirichletGroup_class) diff --git a/src/sage/modular/modform/ambient.py b/src/sage/modular/modform/ambient.py index dac59731ec5..baf9f9de1ad 100644 --- a/src/sage/modular/modform/ambient.py +++ b/src/sage/modular/modform/ambient.py @@ -71,7 +71,7 @@ from sage.arith.misc import is_prime, sigma from sage.matrix.constructor import matrix from sage.misc.cachefunc import cached_method -from sage.modular.arithgroup.all import is_CongruenceSubgroup, is_Gamma0, is_Gamma1 +from sage.modular.arithgroup.all import CongruenceSubgroupBase, is_Gamma0, is_Gamma1 from sage.modular.dirichlet import TrivialCharacter from sage.modular.hecke.ambient_module import AmbientHeckeModule from sage.modular.modsym.modsym import ModularSymbols @@ -102,11 +102,11 @@ def __init__(self, group, weight, base_ring, character=None, eis_only=False): sage: m.is_ambient() True """ - if not is_CongruenceSubgroup(group): + if not isinstance(group, CongruenceSubgroupBase): raise TypeError('group (=%s) must be a congruence subgroup' % group) weight = Integer(weight) - if character is None and is_Gamma0(group): + if character is None and isinstance(group, Gamma0_class): character = TrivialCharacter(group.level(), base_ring) self._eis_only = eis_only @@ -583,7 +583,7 @@ def _dim_cuspidal(self): """ if self._eis_only: return 0 - if is_Gamma1(self.group()) and self.character() is not None: + if isinstance(self.group(), Gamma1_class) and self.character() is not None: return self.group().dimension_cusp_forms(self.weight(), self.character()) else: @@ -614,7 +614,7 @@ def _dim_eisenstein(self): sage: ModularForms(GammaH(40, [21]), 1).dimension() # indirect doctest 16 """ - if is_Gamma1(self.group()) and self.character() is not None: + if isinstance(self.group(), Gamma1_class) and self.character() is not None: return self.group().dimension_eis(self.weight(), self.character()) else: return self.group().dimension_eis(self.weight()) @@ -636,7 +636,7 @@ def _dim_new_cuspidal(self): sage: m._dim_cuspidal() 22 """ - if is_Gamma1(self.group()) and self.character() is not None: + if isinstance(self.group(), Gamma1_class) and self.character() is not None: return self.group().dimension_new_cusp_forms(self.weight(), self.character()) else: return self.group().dimension_new_cusp_forms(self.weight()) @@ -662,7 +662,7 @@ def _dim_new_eisenstein(self): sage: m._dim_eisenstein() 8 """ - if is_Gamma0(self.group()) and self.weight() == 2: + if isinstance(self.group(), Gamma0_class) and self.weight() == 2: if is_prime(self.level()): d = 1 else: @@ -693,7 +693,7 @@ def eisenstein_params(self): """ eps = self.character() if eps is None: - if is_Gamma1(self.group()): + if isinstance(self.group(), Gamma1_class): eps = self.level() else: raise NotImplementedError diff --git a/src/sage/modular/modform/constructor.py b/src/sage/modular/modform/constructor.py index 02107b2f9d7..450453e6c19 100644 --- a/src/sage/modular/modform/constructor.py +++ b/src/sage/modular/modform/constructor.py @@ -105,12 +105,12 @@ def canonical_parameters(group, level, weight, base_ring): group = group.minimize_base_ring() level = Integer(level) - elif arithgroup.is_CongruenceSubgroup(group): + elif arithgroup.isinstance(group, CongruenceSubgroupBase): if ( Integer(level) != group.level() ): raise ValueError("group.level() and level do not match.") # normalize the case of SL2Z - if arithgroup.is_SL2Z(group) or \ - arithgroup.is_Gamma1(group) and group.level() == Integer(1): + if arithgroup.isinstance(group, SL2Z_class) or \ + arithgroup.isinstance(group, Gamma1_class) and group.level() == Integer(1): group = arithgroup.Gamma0(Integer(1)) elif group is None: @@ -317,7 +317,7 @@ def ModularForms(group=1, base_ring = QQ if isinstance(group, dirichlet.DirichletCharacter) \ - or arithgroup.is_CongruenceSubgroup(group): + or arithgroup.isinstance(group, CongruenceSubgroupBase): level = group.level() else: level = group @@ -337,17 +337,17 @@ def ModularForms(group=1, (level, group, weight, base_ring, eis_only) = key M = None - if arithgroup.is_Gamma0(group): + if arithgroup.isinstance(group, Gamma0_class): M = ModularFormsAmbient_g0_Q(group.level(), weight) if base_ring != QQ: M = ambient_R.ModularFormsAmbient_R(M, base_ring) - elif arithgroup.is_Gamma1(group): + elif arithgroup.isinstance(group, Gamma1_class): M = ModularFormsAmbient_g1_Q(group.level(), weight, eis_only) if base_ring != QQ: M = ambient_R.ModularFormsAmbient_R(M, base_ring) - elif arithgroup.is_GammaH(group): + elif arithgroup.isinstance(group, GammaH_class): M = ModularFormsAmbient_gH_Q(group, weight, eis_only) if base_ring != QQ: M = ambient_R.ModularFormsAmbient_R(M, base_ring) diff --git a/src/sage/modular/modform/element.py b/src/sage/modular/modform/element.py index 999b8dc93b9..fa16bd5c8af 100644 --- a/src/sage/modular/modform/element.py +++ b/src/sage/modular/modform/element.py @@ -44,7 +44,7 @@ from sage.modular.dirichlet import DirichletGroup from sage.modular.modsym.modsym import ModularSymbols from sage.modular.modsym.p1list import lift_to_sl2z -from sage.modular.modsym.space import is_ModularSymbolsSpace +from sage.modular.modsym.space import ModularSymbolsSpace from sage.modules.free_module_element import vector from sage.rings.complex_mpfr import ComplexField from sage.rings.fast_arith import prime_range @@ -1397,11 +1397,11 @@ def __init__(self, parent, component, names, check=True): sage: f = Newforms(DirichletGroup(5).0, 7,names='a')[0]; f[2].trace(f.base_ring().base_field()) -5*zeta4 - 5 """ - from .space import is_ModularFormsSpace + from .space import ModularFormsSpace if check: - if not is_ModularFormsSpace(parent): + if not isinstance(parent, ModularFormsSpace): raise TypeError("parent must be a space of modular forms") - if not is_ModularSymbolsSpace(component): + if not isinstance(component, ModularSymbolsSpace): raise TypeError("component must be a space of modular symbols") if parent.group() != component.group(): raise ValueError("parent and component must be defined by the same congruence subgroup") diff --git a/src/sage/modular/modform/ring.py b/src/sage/modular/modform/ring.py index d16ba084dbb..4f7b06036c6 100644 --- a/src/sage/modular/modform/ring.py +++ b/src/sage/modular/modform/ring.py @@ -41,7 +41,7 @@ from .constructor import ModularForms from .element import is_ModularFormElement, GradedModularFormElement -from .space import is_ModularFormsSpace +from .space import ModularFormsSpace def _span_of_forms_in_weight(forms, weight, prec, stop_dim=None, use_random=False): @@ -231,7 +231,7 @@ def __init__(self, group, base_ring=QQ): """ if isinstance(group, (int, Integer)): group = Gamma0(group) - elif not is_CongruenceSubgroup(group): + elif not isinstance(group, CongruenceSubgroupBase): raise ValueError("group (=%s) should be a congruence subgroup" % group) if base_ring != ZZ and not base_ring.is_field() and not base_ring.is_finite(): @@ -592,7 +592,7 @@ def _coerce_map_from_(self, M): sage: M(D) + 53 54 + 65520/691*q + 134250480/691*q^2 + 11606736960/691*q^3 + 274945048560/691*q^4 + 3199218815520/691*q^5 + O(q^6) """ - if is_ModularFormsSpace(M): + if isinstance(M, ModularFormsSpace): if M.group() == self.group() and self.has_coerce_map_from(M.base_ring()): return True if self.base_ring().has_coerce_map_from(M): diff --git a/src/sage/modular/modform/space.py b/src/sage/modular/modform/space.py index 289119f9d37..48e9bb1054a 100644 --- a/src/sage/modular/modform/space.py +++ b/src/sage/modular/modform/space.py @@ -91,12 +91,12 @@ def is_ModularFormsSpace(x): EXAMPLES:: - sage: from sage.modular.modform.space import is_ModularFormsSpace - sage: is_ModularFormsSpace(ModularForms(11,2)) + sage: from sage.modular.modform.space import ModularFormsSpace + sage: isinstance(ModularForms(11,2), ModularFormsSpace) True - sage: is_ModularFormsSpace(CuspForms(11,2)) + sage: isinstance(CuspForms(11,2), ModularFormsSpace) True - sage: is_ModularFormsSpace(3) + sage: isinstance(3, ModularFormsSpace) False """ return isinstance(x, ModularFormsSpace) @@ -140,7 +140,7 @@ def __init__(self, group, weight, character, base_ring, category=None): if WARN: print("Modular forms -- under development -- do not trust yet.") WARN = False - if not arithgroup.is_CongruenceSubgroup(group): + if not arithgroup.isinstance(group, CongruenceSubgroupBase): raise TypeError("group (=%s) must be a congruence subgroup" % group) weight = Integer(weight) if not ((character is None) or isinstance(character, dirichlet.DirichletCharacter)): @@ -1503,8 +1503,8 @@ def sturm_bound(self, M=None): raise NotImplementedError if self.__sturm_bound is None: G = self.group() - from sage.modular.arithgroup.all import is_Gamma1 - if is_Gamma1(G) and self.character() is not None: + from sage.modular.arithgroup.all import Gamma1_class + if isinstance(G, Gamma1_class) and self.character() is not None: from sage.modular.arithgroup.all import Gamma0 G = Gamma0(self.level()) # the +1 below is because O(q^prec) has precision prec. diff --git a/src/sage/modular/modsym/ambient.py b/src/sage/modular/modsym/ambient.py index cbd6c8e80b3..58696948df8 100644 --- a/src/sage/modular/modsym/ambient.py +++ b/src/sage/modular/modsym/ambient.py @@ -164,14 +164,14 @@ def __init__(self, group, weight, sign, base_ring, weight = int(weight) if weight <= 1: raise ValueError("Weight (=%s) Modular symbols of weight <= 1 not defined." % weight) - if not arithgroup.is_CongruenceSubgroup(group): + if not arithgroup.isinstance(group, CongruenceSubgroupBase): raise TypeError("group must be a congruence subgroup") sign = int(sign) if base_ring not in Fields(): raise TypeError("base_ring must be a field") - if character is None and arithgroup.is_Gamma0(group): + if character is None and arithgroup.isinstance(group, Gamma0_class): character = TrivialCharacter(group.level(), base_ring) ModularSymbolsSpace.__init__(self, group, weight, @@ -2691,9 +2691,9 @@ def _degeneracy_raising_matrix_1(self, M): # 1. Find coset representatives H for Gamma_0(M.level()) \ Gamma_0(self.level()) # (need to be careful in some small levels, cf. #13198) - if arithgroup.is_Gamma0(M.group()): + if arithgroup.isinstance(M.group(), Gamma0_class): H = arithgroup.degeneracy_coset_representatives_gamma0(level, N, 1) - elif arithgroup.is_Gamma1(M.group()): + elif arithgroup.isinstance(M.group(), Gamma1_class): H = arithgroup.degeneracy_coset_representatives_gamma1(level, N, 1) else: raise NotImplementedError("Degeneracy raising maps not implemented for GammaH levels") diff --git a/src/sage/modular/modsym/boundary.py b/src/sage/modular/modsym/boundary.py index fab48aab6a3..cc5ae0b0fa0 100644 --- a/src/sage/modular/modsym/boundary.py +++ b/src/sage/modular/modsym/boundary.py @@ -317,12 +317,12 @@ def __init__(self, weight = int(weight) if weight <= 1: raise ArithmeticError("weight must be at least 2") - if not arithgroup.is_CongruenceSubgroup(group): + if not arithgroup.isinstance(group, CongruenceSubgroupBase): raise TypeError("group must be a congruence subgroup") sign = int(sign) if base_ring not in Rings().Commutative(): raise TypeError("base_ring must be a commutative ring") - if character is None and arithgroup.is_Gamma0(group): + if character is None and arithgroup.isinstance(group, Gamma0_class): character = dirichlet.TrivialCharacter(group.level(), base_ring) (self.__group, self.__weight, self.__character, self.__sign, self.__base_ring) = (group, weight, diff --git a/src/sage/modular/modsym/modsym.py b/src/sage/modular/modsym/modsym.py index 51108d1e84a..f0ea2cf5807 100644 --- a/src/sage/modular/modsym/modsym.py +++ b/src/sage/modular/modsym/modsym.py @@ -386,7 +386,7 @@ def ModularSymbols(group=1, group, weight, sign, base_ring = key M = None - if arithgroup.is_Gamma0(group): + if arithgroup.isinstance(group, Gamma0_class): if weight == 2: M = ambient.ModularSymbolsAmbient_wt2_g0( group.level(), sign, base_ring, custom_init=custom_init) @@ -394,12 +394,12 @@ def ModularSymbols(group=1, M = ambient.ModularSymbolsAmbient_wtk_g0( group.level(), weight, sign, base_ring, custom_init=custom_init) - elif arithgroup.is_Gamma1(group): + elif arithgroup.isinstance(group, Gamma1_class): M = ambient.ModularSymbolsAmbient_wtk_g1(group.level(), weight, sign, base_ring, custom_init=custom_init) - elif arithgroup.is_GammaH(group): + elif arithgroup.isinstance(group, GammaH_class): M = ambient.ModularSymbolsAmbient_wtk_gamma_h(group, weight, sign, base_ring, custom_init=custom_init) diff --git a/src/sage/modular/modsym/space.py b/src/sage/modular/modsym/space.py index a097c1b0c8d..83294166542 100644 --- a/src/sage/modular/modsym/space.py +++ b/src/sage/modular/modsym/space.py @@ -57,9 +57,9 @@ def is_ModularSymbolsSpace(x): EXAMPLES:: sage: M = ModularForms(3, 2) - sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M) + sage: sage.modular.modsym.space.isinstance(M, ModularSymbolsSpace) False - sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M.modular_symbols(sign=1)) + sage: sage.modular.modsym.space.isinstance(M.modular_symbols(sign=1), ModularSymbolsSpace) True """ return isinstance(x, ModularSymbolsSpace) @@ -2288,7 +2288,7 @@ def abvarquo_rational_cuspidal_subgroup(self): raise ValueError("base ring must be QQ") if self.weight() != 2: raise NotImplementedError("only implemented when weight is 2") - if not is_Gamma0(self.group()): + if not isinstance(self.group(), Gamma0_class): # todo -- do Gamma1 and GammaH, which are easy raise NotImplementedError("only implemented when group is Gamma0") N = self.level() diff --git a/src/sage/modular/overconvergent/genus0.py b/src/sage/modular/overconvergent/genus0.py index d6359e53007..821653aaf8a 100644 --- a/src/sage/modular/overconvergent/genus0.py +++ b/src/sage/modular/overconvergent/genus0.py @@ -205,7 +205,7 @@ from sage.misc.cachefunc import cached_method from sage.misc.lazy_import import lazy_import from sage.misc.verbose import verbose -from sage.modular.arithgroup.all import is_Gamma0, is_Gamma1 +from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1 from sage.modular.dirichlet import trivial_character from sage.modular.etaproducts import EtaProduct from sage.modular.modform.element import ModularFormElement @@ -278,7 +278,7 @@ def OverconvergentModularForms(prime, weight, radius, base_ring=QQ, prec=20, cha Space of 3-adic 1/2-overconvergent modular forms of weight-character (3, 3, [-1]) over Rational Field """ - if is_Gamma0(prime) or is_Gamma1(prime): + if isinstance(prime, Gamma0_class) or isinstance(prime, Gamma1_class): prime = prime.level() else: prime = ZZ(prime) diff --git a/src/sage/modular/pollack_stevens/space.py b/src/sage/modular/pollack_stevens/space.py index c0464dd61d8..ae0c523463a 100644 --- a/src/sage/modular/pollack_stevens/space.py +++ b/src/sage/modular/pollack_stevens/space.py @@ -557,11 +557,11 @@ def _p_stabilize_parent_space(self, p, new_base_ring): from sage.modular.arithgroup.all import (Gamma, is_Gamma, Gamma0, is_Gamma0, Gamma1, is_Gamma1) G = self.group() - if is_Gamma0(G): + if isinstance(G, Gamma0_class): G = Gamma0(N * p) - elif is_Gamma1(G): + elif isinstance(G, Gamma1_class): G = Gamma1(N * p) - elif is_Gamma(G): + elif isinstance(G, Gamma_class): G = Gamma(N * p) else: raise NotImplementedError diff --git a/src/sage/modular/quasimodform/element.py b/src/sage/modular/quasimodform/element.py index 3a8d445f1be..435634bd2cc 100644 --- a/src/sage/modular/quasimodform/element.py +++ b/src/sage/modular/quasimodform/element.py @@ -19,7 +19,7 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.modular.arithgroup.congroup_sl2z import is_SL2Z +from sage.modular.arithgroup.congroup_sl2z import SL2Z_class from sage.modular.modform.constructor import EisensteinForms from sage.modular.modform.eis_series import eisenstein_series_qexp from sage.modular.modform.element import GradedModularFormElement @@ -712,7 +712,7 @@ def serre_derivative(self): QM = self.parent() R = QM.base_ring() E2 = QM.gen(0) - if is_SL2Z(QM.group()): + if isinstance(QM.group(), SL2Z_class): E4 = QM.gen(1) else: E4 = QM(EisensteinForms(group=1, weight=4, base_ring=R).gen(0)) diff --git a/src/sage/modular/quasimodform/ring.py b/src/sage/modular/quasimodform/ring.py index 5a91a837ecd..ecbb2709b24 100644 --- a/src/sage/modular/quasimodform/ring.py +++ b/src/sage/modular/quasimodform/ring.py @@ -172,7 +172,7 @@ from sage.categories.graded_algebras import GradedAlgebras from sage.modular.arithgroup.congroup_gamma0 import Gamma0_constructor as Gamma0 -from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup +from sage.modular.arithgroup.congroup_generic import CongruenceSubgroupBase from sage.modular.modform.element import GradedModularFormElement, ModularFormElement from sage.modular.modform.space import ModularFormsSpace from sage.modular.modform.ring import ModularFormsRing @@ -256,7 +256,7 @@ def __init__(self, group=1, base_ring=QQ, name='E2'): # check if the group is SL2(Z) if isinstance(group, (int, Integer)): group = Gamma0(group) - elif not is_CongruenceSubgroup(group): + elif not isinstance(group, CongruenceSubgroupBase): raise ValueError("Group (=%s) should be a congruence subgroup" % group) # Check if the base ring is the rational field From 3e45e18c4972677cde78e810fc9bae468efe994a Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 19 May 2024 23:43:36 -0700 Subject: [PATCH 2/7] fixup isinstance --- src/sage/modular/modform/constructor.py | 14 +++++++------- src/sage/modular/modform/space.py | 2 +- src/sage/modular/modsym/ambient.py | 8 ++++---- src/sage/modular/modsym/boundary.py | 4 ++-- src/sage/modular/modsym/modsym.py | 6 +++--- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/sage/modular/modform/constructor.py b/src/sage/modular/modform/constructor.py index 450453e6c19..98e37653100 100644 --- a/src/sage/modular/modform/constructor.py +++ b/src/sage/modular/modform/constructor.py @@ -105,12 +105,12 @@ def canonical_parameters(group, level, weight, base_ring): group = group.minimize_base_ring() level = Integer(level) - elif arithgroup.isinstance(group, CongruenceSubgroupBase): + elif isinstance(group, arithgroup.CongruenceSubgroupBase): if ( Integer(level) != group.level() ): raise ValueError("group.level() and level do not match.") # normalize the case of SL2Z - if arithgroup.isinstance(group, SL2Z_class) or \ - arithgroup.isinstance(group, Gamma1_class) and group.level() == Integer(1): + if isinstance(group, arithgroup.SL2Z_class) or \ + isinstance(group, arithgroup.Gamma1_class) and group.level() == Integer(1): group = arithgroup.Gamma0(Integer(1)) elif group is None: @@ -317,7 +317,7 @@ def ModularForms(group=1, base_ring = QQ if isinstance(group, dirichlet.DirichletCharacter) \ - or arithgroup.isinstance(group, CongruenceSubgroupBase): + or isinstance(group, arithgroup.CongruenceSubgroupBase): level = group.level() else: level = group @@ -337,17 +337,17 @@ def ModularForms(group=1, (level, group, weight, base_ring, eis_only) = key M = None - if arithgroup.isinstance(group, Gamma0_class): + if isinstance(group, arithgroup.Gamma0_class): M = ModularFormsAmbient_g0_Q(group.level(), weight) if base_ring != QQ: M = ambient_R.ModularFormsAmbient_R(M, base_ring) - elif arithgroup.isinstance(group, Gamma1_class): + elif isinstance(group, arithgroup.Gamma1_class): M = ModularFormsAmbient_g1_Q(group.level(), weight, eis_only) if base_ring != QQ: M = ambient_R.ModularFormsAmbient_R(M, base_ring) - elif arithgroup.isinstance(group, GammaH_class): + elif isinstance(group, arithgroup.GammaH_class): M = ModularFormsAmbient_gH_Q(group, weight, eis_only) if base_ring != QQ: M = ambient_R.ModularFormsAmbient_R(M, base_ring) diff --git a/src/sage/modular/modform/space.py b/src/sage/modular/modform/space.py index 48e9bb1054a..1fb0b121ad7 100644 --- a/src/sage/modular/modform/space.py +++ b/src/sage/modular/modform/space.py @@ -140,7 +140,7 @@ def __init__(self, group, weight, character, base_ring, category=None): if WARN: print("Modular forms -- under development -- do not trust yet.") WARN = False - if not arithgroup.isinstance(group, CongruenceSubgroupBase): + if not isinstance(group, arithgroup.CongruenceSubgroupBase): raise TypeError("group (=%s) must be a congruence subgroup" % group) weight = Integer(weight) if not ((character is None) or isinstance(character, dirichlet.DirichletCharacter)): diff --git a/src/sage/modular/modsym/ambient.py b/src/sage/modular/modsym/ambient.py index 58696948df8..9b42eef23e8 100644 --- a/src/sage/modular/modsym/ambient.py +++ b/src/sage/modular/modsym/ambient.py @@ -164,14 +164,14 @@ def __init__(self, group, weight, sign, base_ring, weight = int(weight) if weight <= 1: raise ValueError("Weight (=%s) Modular symbols of weight <= 1 not defined." % weight) - if not arithgroup.isinstance(group, CongruenceSubgroupBase): + if not isinstance(group, arithgroup.CongruenceSubgroupBase): raise TypeError("group must be a congruence subgroup") sign = int(sign) if base_ring not in Fields(): raise TypeError("base_ring must be a field") - if character is None and arithgroup.isinstance(group, Gamma0_class): + if character is None and isinstance(group, arithgroup.Gamma0_class): character = TrivialCharacter(group.level(), base_ring) ModularSymbolsSpace.__init__(self, group, weight, @@ -2691,9 +2691,9 @@ def _degeneracy_raising_matrix_1(self, M): # 1. Find coset representatives H for Gamma_0(M.level()) \ Gamma_0(self.level()) # (need to be careful in some small levels, cf. #13198) - if arithgroup.isinstance(M.group(), Gamma0_class): + if isinstance(M.group(), arithgroup.Gamma0_class): H = arithgroup.degeneracy_coset_representatives_gamma0(level, N, 1) - elif arithgroup.isinstance(M.group(), Gamma1_class): + elif isinstance(M.group(), arithgroup.Gamma1_class): H = arithgroup.degeneracy_coset_representatives_gamma1(level, N, 1) else: raise NotImplementedError("Degeneracy raising maps not implemented for GammaH levels") diff --git a/src/sage/modular/modsym/boundary.py b/src/sage/modular/modsym/boundary.py index cc5ae0b0fa0..ffe271b4c6c 100644 --- a/src/sage/modular/modsym/boundary.py +++ b/src/sage/modular/modsym/boundary.py @@ -317,12 +317,12 @@ def __init__(self, weight = int(weight) if weight <= 1: raise ArithmeticError("weight must be at least 2") - if not arithgroup.isinstance(group, CongruenceSubgroupBase): + if not isinstance(group, arithgroup.CongruenceSubgroupBase): raise TypeError("group must be a congruence subgroup") sign = int(sign) if base_ring not in Rings().Commutative(): raise TypeError("base_ring must be a commutative ring") - if character is None and arithgroup.isinstance(group, Gamma0_class): + if character is None and isinstance(group, arithgroup.Gamma0_class): character = dirichlet.TrivialCharacter(group.level(), base_ring) (self.__group, self.__weight, self.__character, self.__sign, self.__base_ring) = (group, weight, diff --git a/src/sage/modular/modsym/modsym.py b/src/sage/modular/modsym/modsym.py index f0ea2cf5807..724bde04d9f 100644 --- a/src/sage/modular/modsym/modsym.py +++ b/src/sage/modular/modsym/modsym.py @@ -386,7 +386,7 @@ def ModularSymbols(group=1, group, weight, sign, base_ring = key M = None - if arithgroup.isinstance(group, Gamma0_class): + if isinstance(group, arithgroup.Gamma0_class): if weight == 2: M = ambient.ModularSymbolsAmbient_wt2_g0( group.level(), sign, base_ring, custom_init=custom_init) @@ -394,12 +394,12 @@ def ModularSymbols(group=1, M = ambient.ModularSymbolsAmbient_wtk_g0( group.level(), weight, sign, base_ring, custom_init=custom_init) - elif arithgroup.isinstance(group, Gamma1_class): + elif isinstance(group, arithgroup.Gamma1_class): M = ambient.ModularSymbolsAmbient_wtk_g1(group.level(), weight, sign, base_ring, custom_init=custom_init) - elif arithgroup.isinstance(group, GammaH_class): + elif isinstance(group, arithgroup.GammaH_class): M = ambient.ModularSymbolsAmbient_wtk_gamma_h(group, weight, sign, base_ring, custom_init=custom_init) From 331377b52207f93410a1c6f6d8a31f3bc927bda1 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 19 May 2024 23:49:37 -0700 Subject: [PATCH 3/7] reverts --- src/sage/modular/abvar/abvar.py | 8 ++++---- .../modular/arithgroup/arithgroup_generic.py | 4 ++-- src/sage/modular/arithgroup/congroup_gamma0.py | 8 ++++---- src/sage/modular/arithgroup/congroup_gamma1.py | 16 ++++++++-------- src/sage/modular/arithgroup/congroup_gammaH.py | 10 +++++----- src/sage/modular/arithgroup/congroup_generic.py | 14 +++++++------- src/sage/modular/arithgroup/congroup_sl2z.py | 6 +++--- src/sage/modular/dirichlet.py | 8 ++++---- src/sage/modular/modform/space.py | 8 ++++---- src/sage/modular/modsym/space.py | 4 ++-- 10 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/sage/modular/abvar/abvar.py b/src/sage/modular/abvar/abvar.py index a1780d9780f..6c206377714 100644 --- a/src/sage/modular/abvar/abvar.py +++ b/src/sage/modular/abvar/abvar.py @@ -89,16 +89,16 @@ def is_ModularAbelianVariety(x) -> bool: EXAMPLES:: - sage: from sage.modular.abvar.abvar import ModularAbelianVariety_abstract - sage: isinstance(5, ModularAbelianVariety_abstract) + sage: from sage.modular.abvar.abvar import is_ModularAbelianVariety + sage: is_ModularAbelianVariety(5) False - sage: isinstance(J0(37), ModularAbelianVariety_abstract) + sage: is_ModularAbelianVariety(J0(37)) True Returning True is a statement about the data type not whether or not some abelian variety is modular:: - sage: isinstance(EllipticCurve('37a'), ModularAbelianVariety_abstract) + sage: is_ModularAbelianVariety(EllipticCurve('37a')) False """ return isinstance(x, ModularAbelianVariety_abstract) diff --git a/src/sage/modular/arithgroup/arithgroup_generic.py b/src/sage/modular/arithgroup/arithgroup_generic.py index 0efe60e6da4..c5274bdc263 100644 --- a/src/sage/modular/arithgroup/arithgroup_generic.py +++ b/src/sage/modular/arithgroup/arithgroup_generic.py @@ -36,10 +36,10 @@ def is_ArithmeticSubgroup(x) -> bool: EXAMPLES:: - sage: from sage.modular.arithgroup.all import ArithmeticSubgroup + sage: from sage.modular.arithgroup.all import is_ArithmeticSubgroup sage: is_ArithmeticSubgroup(GL(2, GF(7))) False - sage: isinstance(Gamma0(4), ArithmeticSubgroup) + sage: is_ArithmeticSubgroup(Gamma0(4)) True """ return isinstance(x, ArithmeticSubgroup) diff --git a/src/sage/modular/arithgroup/congroup_gamma0.py b/src/sage/modular/arithgroup/congroup_gamma0.py index 3de50ffeead..7b662a6a555 100644 --- a/src/sage/modular/arithgroup/congroup_gamma0.py +++ b/src/sage/modular/arithgroup/congroup_gamma0.py @@ -30,12 +30,12 @@ def is_Gamma0(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import Gamma0_class - sage: isinstance(SL2Z, Gamma0_class) + sage: from sage.modular.arithgroup.all import is_Gamma0 + sage: is_Gamma0(SL2Z) True - sage: isinstance(Gamma0(13), Gamma0_class) + sage: is_Gamma0(Gamma0(13)) True - sage: isinstance(Gamma1(6), Gamma0_class) + sage: is_Gamma0(Gamma1(6)) False """ return isinstance(x, Gamma0_class) diff --git a/src/sage/modular/arithgroup/congroup_gamma1.py b/src/sage/modular/arithgroup/congroup_gamma1.py index 7987ab40bf3..494c5b611be 100644 --- a/src/sage/modular/arithgroup/congroup_gamma1.py +++ b/src/sage/modular/arithgroup/congroup_gamma1.py @@ -27,20 +27,20 @@ def is_Gamma1(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import Gamma1_class - sage: isinstance(SL2Z, Gamma1_class) + sage: from sage.modular.arithgroup.all import is_Gamma1 + sage: is_Gamma1(SL2Z) False - sage: isinstance(Gamma1(13), Gamma1_class) + sage: is_Gamma1(Gamma1(13)) True - sage: isinstance(Gamma0(6), Gamma1_class) + sage: is_Gamma1(Gamma0(6)) False - sage: isinstance(GammaH(12, []), Gamma1_class) # trick question! + sage: is_Gamma1(GammaH(12, [])) # trick question! True - sage: isinstance(GammaH(12, [5]), Gamma1_class) + sage: is_Gamma1(GammaH(12, [5])) False """ - #from congroup_sl2z import SL2Z_class - #return (isinstance(x, Gamma1_class) or isinstance(x, SL2Z_class)) + #from congroup_sl2z import is_SL2Z + #return (isinstance(x, Gamma1_class) or is_SL2Z(x)) return isinstance(x, Gamma1_class) diff --git a/src/sage/modular/arithgroup/congroup_gammaH.py b/src/sage/modular/arithgroup/congroup_gammaH.py index e2c7c8d82ab..c2db362db19 100644 --- a/src/sage/modular/arithgroup/congroup_gammaH.py +++ b/src/sage/modular/arithgroup/congroup_gammaH.py @@ -98,14 +98,14 @@ def is_GammaH(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import GammaH_class - sage: isinstance(GammaH(13, [2]), GammaH_class) + sage: from sage.modular.arithgroup.all import is_GammaH + sage: is_GammaH(GammaH(13, [2])) True - sage: isinstance(Gamma0(6), GammaH_class) + sage: is_GammaH(Gamma0(6)) True - sage: isinstance(Gamma1(6), GammaH_class) + sage: is_GammaH(Gamma1(6)) True - sage: isinstance(sage.modular.arithgroup.congroup_generic.CongruenceSubgroup(5), GammaH_class) + sage: is_GammaH(sage.modular.arithgroup.congroup_generic.CongruenceSubgroup(5)) False """ return isinstance(x, GammaH_class) diff --git a/src/sage/modular/arithgroup/congroup_generic.py b/src/sage/modular/arithgroup/congroup_generic.py index 3e82d8e86d1..16dd011ecde 100644 --- a/src/sage/modular/arithgroup/congroup_generic.py +++ b/src/sage/modular/arithgroup/congroup_generic.py @@ -126,20 +126,20 @@ def is_CongruenceSubgroup(x): EXAMPLES:: - sage: from sage.modular.arithgroup.congroup_generic import CongruenceSubgroupBase - sage: isinstance(SL2Z, CongruenceSubgroupBase) + sage: from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup + sage: is_CongruenceSubgroup(SL2Z) True - sage: isinstance(Gamma0(13), CongruenceSubgroupBase) + sage: is_CongruenceSubgroup(Gamma0(13)) True - sage: isinstance(Gamma1(6), CongruenceSubgroupBase) + sage: is_CongruenceSubgroup(Gamma1(6)) True - sage: isinstance(GammaH(11, [3]), CongruenceSubgroupBase) + sage: is_CongruenceSubgroup(GammaH(11, [3])) True - sage: G = ArithmeticSubgroup_Permutation(L = "(1, 2)", R = "(1, 2)"); isinstance(G, CongruenceSubgroupBase) + sage: G = ArithmeticSubgroup_Permutation(L = "(1, 2)", R = "(1, 2)"); is_CongruenceSubgroup(G) False sage: G.is_congruence() True - sage: isinstance(SymmetricGroup(3), CongruenceSubgroupBase) + sage: is_CongruenceSubgroup(SymmetricGroup(3)) False """ return isinstance(x, CongruenceSubgroupBase) diff --git a/src/sage/modular/arithgroup/congroup_sl2z.py b/src/sage/modular/arithgroup/congroup_sl2z.py index b62bfc3b42b..d870f207b38 100644 --- a/src/sage/modular/arithgroup/congroup_sl2z.py +++ b/src/sage/modular/arithgroup/congroup_sl2z.py @@ -34,10 +34,10 @@ def is_SL2Z(x): EXAMPLES:: - sage: from sage.modular.arithgroup.all import SL2Z_class - sage: isinstance(SL2Z, SL2Z_class) + sage: from sage.modular.arithgroup.all import is_SL2Z + sage: is_SL2Z(SL2Z) True - sage: isinstance(Gamma0(6), SL2Z_class) + sage: is_SL2Z(Gamma0(6)) False """ return isinstance(x, SL2Z_class) diff --git a/src/sage/modular/dirichlet.py b/src/sage/modular/dirichlet.py index e3de858771d..3f871dadf91 100644 --- a/src/sage/modular/dirichlet.py +++ b/src/sage/modular/dirichlet.py @@ -2573,12 +2573,12 @@ def is_DirichletGroup(x): EXAMPLES:: - sage: from sage.modular.dirichlet import DirichletGroup_class - sage: isinstance(DirichletGroup(11), DirichletGroup_class) + sage: from sage.modular.dirichlet import is_DirichletGroup + sage: is_DirichletGroup(DirichletGroup(11)) True - sage: isinstance(11, DirichletGroup_class) + sage: is_DirichletGroup(11) False - sage: isinstance(DirichletGroup(11).0, DirichletGroup_class) + sage: is_DirichletGroup(DirichletGroup(11).0) False """ return isinstance(x, DirichletGroup_class) diff --git a/src/sage/modular/modform/space.py b/src/sage/modular/modform/space.py index 1fb0b121ad7..7b1b156d2f9 100644 --- a/src/sage/modular/modform/space.py +++ b/src/sage/modular/modform/space.py @@ -91,12 +91,12 @@ def is_ModularFormsSpace(x): EXAMPLES:: - sage: from sage.modular.modform.space import ModularFormsSpace - sage: isinstance(ModularForms(11,2), ModularFormsSpace) + sage: from sage.modular.modform.space import is_ModularFormsSpace + sage: is_ModularFormsSpace(ModularForms(11,2)) True - sage: isinstance(CuspForms(11,2), ModularFormsSpace) + sage: is_ModularFormsSpace(CuspForms(11,2)) True - sage: isinstance(3, ModularFormsSpace) + sage: is_ModularFormsSpace(3) False """ return isinstance(x, ModularFormsSpace) diff --git a/src/sage/modular/modsym/space.py b/src/sage/modular/modsym/space.py index 83294166542..ecd476ccab8 100644 --- a/src/sage/modular/modsym/space.py +++ b/src/sage/modular/modsym/space.py @@ -57,9 +57,9 @@ def is_ModularSymbolsSpace(x): EXAMPLES:: sage: M = ModularForms(3, 2) - sage: sage.modular.modsym.space.isinstance(M, ModularSymbolsSpace) + sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M) False - sage: sage.modular.modsym.space.isinstance(M.modular_symbols(sign=1), ModularSymbolsSpace) + sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M.modular_symbols(sign=1)) True """ return isinstance(x, ModularSymbolsSpace) From 8eada3f887b2efea8fcaba4e923be05b869cc306 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 25 May 2024 10:52:12 -0700 Subject: [PATCH 4/7] fixups --- src/sage/modular/abvar/abvar_ambient_jacobian.py | 2 +- src/sage/modular/abvar/abvar_newform.py | 2 +- src/sage/modular/abvar/torsion_subgroup.py | 2 +- src/sage/modular/arithgroup/all.py | 14 +++++++------- src/sage/modular/arithgroup/arithgroup_generic.py | 4 ++-- src/sage/modular/arithgroup/congroup_gammaH.py | 2 +- src/sage/modular/dims.py | 4 ++-- src/sage/modular/modform/ambient.py | 2 +- src/sage/modular/modform/ring.py | 2 +- src/sage/modular/modsym/space.py | 2 +- src/sage/modular/overconvergent/genus0.py | 2 +- src/sage/modular/pollack_stevens/space.py | 4 ++-- 12 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/sage/modular/abvar/abvar_ambient_jacobian.py b/src/sage/modular/abvar/abvar_ambient_jacobian.py index 6af8091ed7e..1b4bafd0d0a 100644 --- a/src/sage/modular/abvar/abvar_ambient_jacobian.py +++ b/src/sage/modular/abvar/abvar_ambient_jacobian.py @@ -19,7 +19,7 @@ from sage.modular.modsym.modsym import ModularSymbols from sage.modular.modform.constructor import Newforms -from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1 +from sage.modular.arithgroup.all import Gamma0_class, Gamma1_class from . import morphism diff --git a/src/sage/modular/abvar/abvar_newform.py b/src/sage/modular/abvar/abvar_newform.py index 31c5709ad10..8997ab01fdf 100644 --- a/src/sage/modular/abvar/abvar_newform.py +++ b/src/sage/modular/abvar/abvar_newform.py @@ -19,7 +19,7 @@ from sage.rings.rational_field import QQ from sage.modular.modform.element import Newform -from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1, is_GammaH +from sage.modular.arithgroup.all import Gamma0_class, Gamma1_class, GammaH_class from .abvar import ModularAbelianVariety_modsym_abstract from . import homspace diff --git a/src/sage/modular/abvar/torsion_subgroup.py b/src/sage/modular/abvar/torsion_subgroup.py index 66755a6bcc7..e9d914349db 100644 --- a/src/sage/modular/abvar/torsion_subgroup.py +++ b/src/sage/modular/abvar/torsion_subgroup.py @@ -92,7 +92,7 @@ from sage.arith.misc import divisors, gcd from sage.misc.misc_c import prod from sage.modular.abvar.torsion_point import TorsionPoint -from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1 +from sage.modular.arithgroup.all import Gamma0_class, Gamma1_class from sage.modular.dirichlet import DirichletGroup from sage.modules.module import Module from sage.rings.fast_arith import prime_range diff --git a/src/sage/modular/arithgroup/all.py b/src/sage/modular/arithgroup/all.py index ffe50b12044..78bb1dfca7e 100644 --- a/src/sage/modular/arithgroup/all.py +++ b/src/sage/modular/arithgroup/all.py @@ -1,13 +1,13 @@ # Note: the is_xxx functions are imported to here, but not from here up to sage.modular.all, so # they are invisible to the user but easy to import all in one go by other code that needs them. -from sage.modular.arithgroup.arithgroup_generic import ArithmeticSubgroup -from sage.modular.arithgroup.congroup_generic import CongruenceSubgroupBase, CongruenceSubgroup_constructor as CongruenceSubgroup -from sage.modular.arithgroup.congroup_gammaH import GammaH_constructor as GammaH, is_GammaH -from sage.modular.arithgroup.congroup_gamma1 import Gamma1_constructor as Gamma1, is_Gamma1 -from sage.modular.arithgroup.congroup_gamma0 import Gamma0_constructor as Gamma0, is_Gamma0 -from sage.modular.arithgroup.congroup_gamma import Gamma_constructor as Gamma, is_Gamma -from sage.modular.arithgroup.congroup_sl2z import SL2Z, is_SL2Z +from sage.modular.arithgroup_generic import is_ArithmeticSubgroup, ArithmeticSubgroup +from sage.modular.congroup_generic import is_CongruenceSubgroup, CongruenceSubgroupBase, CongruenceSubgroup_constructor as CongruenceSubgroup +from sage.modular.congroup_gammaH import GammaH_constructor as GammaH, is_GammaH, GammaH_class +from sage.modular.congroup_gamma1 import Gamma1_constructor as Gamma1, is_Gamma1, Gamma1_class +from sage.modular.congroup_gamma0 import Gamma0_constructor as Gamma0, is_Gamma0, Gamma0_class +from sage.modular.congroup_gamma import Gamma_constructor as Gamma, is_Gamma, Gamma_class +from sage.modular.congroup_sl2z import SL2Z, is_SL2Z, SL2Z_class from sage.misc.lazy_import import lazy_import lazy_import('sage.modular.arithgroup.arithgroup_perm', 'ArithmeticSubgroup_Permutation') diff --git a/src/sage/modular/arithgroup/arithgroup_generic.py b/src/sage/modular/arithgroup/arithgroup_generic.py index c5274bdc263..75ed591fdfa 100644 --- a/src/sage/modular/arithgroup/arithgroup_generic.py +++ b/src/sage/modular/arithgroup/arithgroup_generic.py @@ -456,7 +456,7 @@ def nu2(self): # Cheap trick: if self is a subgroup of something with no elliptic points, # then self has no elliptic points either. - from .all import Gamma0, is_CongruenceSubgroup + from .all import Gamma0, CongruenceSubgroupBase if isinstance(self, CongruenceSubgroupBase): if self.is_subgroup(Gamma0(self.level())) and Gamma0(self.level()).nu2() == 0: return 0 @@ -496,7 +496,7 @@ def nu3(self): # Cheap trick: if self is a subgroup of something with no elliptic points, # then self has no elliptic points either. - from .all import Gamma0, is_CongruenceSubgroup + from .all import Gamma0, CongruenceSubgroupBase if isinstance(self, CongruenceSubgroupBase): if self.is_subgroup(Gamma0(self.level())) and Gamma0(self.level()).nu3() == 0: return 0 diff --git a/src/sage/modular/arithgroup/congroup_gammaH.py b/src/sage/modular/arithgroup/congroup_gammaH.py index c2db362db19..25e5c628b82 100644 --- a/src/sage/modular/arithgroup/congroup_gammaH.py +++ b/src/sage/modular/arithgroup/congroup_gammaH.py @@ -1026,7 +1026,7 @@ def is_subgroup(self, other): True """ - from .all import Gamma0_class, is_Gamma1 + from .all import Gamma0_class, Gamma1_class if not isinstance(other, GammaH_class): raise NotImplementedError diff --git a/src/sage/modular/dims.py b/src/sage/modular/dims.py index a68a335568c..3f246ad93ad 100644 --- a/src/sage/modular/dims.py +++ b/src/sage/modular/dims.py @@ -47,8 +47,8 @@ from sage.arith.misc import factor, is_prime, valuation from sage.misc.misc_c import prod -from sage.modular.arithgroup.all import (Gamma0, Gamma1, is_ArithmeticSubgroup, - is_GammaH) +from sage.modular.arithgroup.all import (Gamma0, Gamma1, ArithmeticSubgroup, + GammaH_class) from sage.rings.finite_rings.integer_mod import Mod from sage.rings.finite_rings.integer_mod_ring import IntegerModRing from sage.rings.integer import Integer diff --git a/src/sage/modular/modform/ambient.py b/src/sage/modular/modform/ambient.py index baf9f9de1ad..c3cd1127e33 100644 --- a/src/sage/modular/modform/ambient.py +++ b/src/sage/modular/modform/ambient.py @@ -71,7 +71,7 @@ from sage.arith.misc import is_prime, sigma from sage.matrix.constructor import matrix from sage.misc.cachefunc import cached_method -from sage.modular.arithgroup.all import CongruenceSubgroupBase, is_Gamma0, is_Gamma1 +from sage.modular.arithgroup.all import CongruenceSubgroupBase, Gamma0_class, Gamma1_class from sage.modular.dirichlet import TrivialCharacter from sage.modular.hecke.ambient_module import AmbientHeckeModule from sage.modular.modsym.modsym import ModularSymbols diff --git a/src/sage/modular/modform/ring.py b/src/sage/modular/modform/ring.py index 4f7b06036c6..cac9923f61a 100644 --- a/src/sage/modular/modform/ring.py +++ b/src/sage/modular/modform/ring.py @@ -28,7 +28,7 @@ from sage.misc.misc_c import prod from sage.misc.superseded import deprecated_function_alias from sage.misc.verbose import verbose -from sage.modular.arithgroup.all import Gamma0, is_CongruenceSubgroup +from sage.modular.arithgroup.all import Gamma0, CongruenceSubgroupBase from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.polynomial.multi_polynomial import MPolynomial diff --git a/src/sage/modular/modsym/space.py b/src/sage/modular/modsym/space.py index ecd476ccab8..c686922ff17 100644 --- a/src/sage/modular/modsym/space.py +++ b/src/sage/modular/modsym/space.py @@ -43,7 +43,7 @@ from sage.structure.richcmp import (richcmp_method, richcmp, rich_to_bool, richcmp_not_equal) -from sage.modular.arithgroup.all import Gamma0, is_Gamma0 # for Sturm bound given a character +from sage.modular.arithgroup.all import Gamma0, Gamma0_class # for Sturm bound given a character from sage.modular.hecke.module import HeckeModule_free_module from sage.modular.modsym.element import ModularSymbolsElement diff --git a/src/sage/modular/overconvergent/genus0.py b/src/sage/modular/overconvergent/genus0.py index 821653aaf8a..4cfdb603bd2 100644 --- a/src/sage/modular/overconvergent/genus0.py +++ b/src/sage/modular/overconvergent/genus0.py @@ -205,7 +205,7 @@ from sage.misc.cachefunc import cached_method from sage.misc.lazy_import import lazy_import from sage.misc.verbose import verbose -from sage.modular.arithgroup.all import Gamma0_class, is_Gamma1 +from sage.modular.arithgroup.all import Gamma0_class, Gamma1_class from sage.modular.dirichlet import trivial_character from sage.modular.etaproducts import EtaProduct from sage.modular.modform.element import ModularFormElement diff --git a/src/sage/modular/pollack_stevens/space.py b/src/sage/modular/pollack_stevens/space.py index ae0c523463a..4bb25a086c7 100644 --- a/src/sage/modular/pollack_stevens/space.py +++ b/src/sage/modular/pollack_stevens/space.py @@ -554,8 +554,8 @@ def _p_stabilize_parent_space(self, p, new_base_ring): N = self.level() if N % p == 0: raise ValueError("the level is not prime to p") - from sage.modular.arithgroup.all import (Gamma, is_Gamma, Gamma0, - is_Gamma0, Gamma1, is_Gamma1) + from sage.modular.arithgroup.all import (Gamma, Gamma_class, Gamma0, + Gamma0_class, Gamma1, Gamma1_class) G = self.group() if isinstance(G, Gamma0_class): G = Gamma0(N * p) From ffa9f3b18b78a3390b7c847069d019e0e88730e1 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 20 May 2024 00:20:29 -0700 Subject: [PATCH 5/7] deprecations --- src/sage/modular/abvar/abvar.py | 5 +++++ src/sage/modular/arithgroup/arithgroup_generic.py | 5 +++++ src/sage/modular/arithgroup/congroup_gamma.py | 4 +++- src/sage/modular/arithgroup/congroup_gamma0.py | 5 +++++ src/sage/modular/arithgroup/congroup_gamma1.py | 5 +++++ src/sage/modular/arithgroup/congroup_gammaH.py | 5 +++++ src/sage/modular/arithgroup/congroup_generic.py | 5 +++++ src/sage/modular/arithgroup/congroup_sl2z.py | 5 +++++ src/sage/modular/dirichlet.py | 5 +++++ src/sage/modular/modform/space.py | 5 +++++ src/sage/modular/modsym/space.py | 5 +++++ 11 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/sage/modular/abvar/abvar.py b/src/sage/modular/abvar/abvar.py index 6c206377714..29d6670237d 100644 --- a/src/sage/modular/abvar/abvar.py +++ b/src/sage/modular/abvar/abvar.py @@ -91,6 +91,9 @@ def is_ModularAbelianVariety(x) -> bool: sage: from sage.modular.abvar.abvar import is_ModularAbelianVariety sage: is_ModularAbelianVariety(5) + doctest:warning... + DeprecationWarning: the function is_ModularAbelianVariety is deprecated; use 'isinstance(..., ModularAbelianVariety_abstract)' instead + See https://github.com/sagemath/sage/issues/38035 for details. False sage: is_ModularAbelianVariety(J0(37)) True @@ -101,6 +104,8 @@ def is_ModularAbelianVariety(x) -> bool: sage: is_ModularAbelianVariety(EllipticCurve('37a')) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_ModularAbelianVariety is deprecated; use 'isinstance(..., ModularAbelianVariety_abstract)' instead") return isinstance(x, ModularAbelianVariety_abstract) diff --git a/src/sage/modular/arithgroup/arithgroup_generic.py b/src/sage/modular/arithgroup/arithgroup_generic.py index 75ed591fdfa..3676e37329c 100644 --- a/src/sage/modular/arithgroup/arithgroup_generic.py +++ b/src/sage/modular/arithgroup/arithgroup_generic.py @@ -38,10 +38,15 @@ def is_ArithmeticSubgroup(x) -> bool: sage: from sage.modular.arithgroup.all import is_ArithmeticSubgroup sage: is_ArithmeticSubgroup(GL(2, GF(7))) + doctest:warning... + DeprecationWarning: the function is_ArithmeticSubgroup is deprecated; use 'isinstance(..., ArithmeticSubgroup)' instead + See https://github.com/sagemath/sage/issues/38035 for details. False sage: is_ArithmeticSubgroup(Gamma0(4)) True """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_ArithmeticSubgroup is deprecated; use 'isinstance(..., ArithmeticSubgroup)' instead") return isinstance(x, ArithmeticSubgroup) diff --git a/src/sage/modular/arithgroup/congroup_gamma.py b/src/sage/modular/arithgroup/congroup_gamma.py index a06e84d5eb5..375df5564c4 100644 --- a/src/sage/modular/arithgroup/congroup_gamma.py +++ b/src/sage/modular/arithgroup/congroup_gamma.py @@ -319,9 +319,11 @@ def is_Gamma(x): sage: isinstance(Gamma(4), Gamma_class) True """ - + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_Gamma is deprecated; use 'isinstance(..., Gamma_class)' instead") return isinstance(x, Gamma_class) + def _lift_pair(U,V,N): r""" Utility function. Given integers ``U, V, N``, with `N \ge 1` and `{\rm diff --git a/src/sage/modular/arithgroup/congroup_gamma0.py b/src/sage/modular/arithgroup/congroup_gamma0.py index 7b662a6a555..da5f213152e 100644 --- a/src/sage/modular/arithgroup/congroup_gamma0.py +++ b/src/sage/modular/arithgroup/congroup_gamma0.py @@ -32,12 +32,17 @@ def is_Gamma0(x): sage: from sage.modular.arithgroup.all import is_Gamma0 sage: is_Gamma0(SL2Z) + doctest:warning... + DeprecationWarning: the function is_Gamma0 is deprecated; use 'isinstance(..., Gamma0_class)' instead + See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_Gamma0(Gamma0(13)) True sage: is_Gamma0(Gamma1(6)) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_Gamma0 is deprecated; use 'isinstance(..., Gamma0_class)' instead") return isinstance(x, Gamma0_class) diff --git a/src/sage/modular/arithgroup/congroup_gamma1.py b/src/sage/modular/arithgroup/congroup_gamma1.py index 494c5b611be..4624cf06d2d 100644 --- a/src/sage/modular/arithgroup/congroup_gamma1.py +++ b/src/sage/modular/arithgroup/congroup_gamma1.py @@ -29,6 +29,9 @@ def is_Gamma1(x): sage: from sage.modular.arithgroup.all import is_Gamma1 sage: is_Gamma1(SL2Z) + doctest:warning... + DeprecationWarning: the function is_Gamma1 is deprecated; use 'isinstance(..., Gamma1_class)' instead + See https://github.com/sagemath/sage/issues/38035 for details. False sage: is_Gamma1(Gamma1(13)) True @@ -39,6 +42,8 @@ def is_Gamma1(x): sage: is_Gamma1(GammaH(12, [5])) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_Gamma1 is deprecated; use 'isinstance(..., Gamma1_class)' instead") #from congroup_sl2z import is_SL2Z #return (isinstance(x, Gamma1_class) or is_SL2Z(x)) return isinstance(x, Gamma1_class) diff --git a/src/sage/modular/arithgroup/congroup_gammaH.py b/src/sage/modular/arithgroup/congroup_gammaH.py index 25e5c628b82..de67663bb19 100644 --- a/src/sage/modular/arithgroup/congroup_gammaH.py +++ b/src/sage/modular/arithgroup/congroup_gammaH.py @@ -100,6 +100,9 @@ def is_GammaH(x): sage: from sage.modular.arithgroup.all import is_GammaH sage: is_GammaH(GammaH(13, [2])) + doctest:warning... + DeprecationWarning: the function is_GammaH is deprecated; use 'isinstance(..., GammaH_class)' instead + See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_GammaH(Gamma0(6)) True @@ -108,6 +111,8 @@ def is_GammaH(x): sage: is_GammaH(sage.modular.arithgroup.congroup_generic.CongruenceSubgroup(5)) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_GammaH is deprecated; use 'isinstance(..., GammaH_class)' instead") return isinstance(x, GammaH_class) diff --git a/src/sage/modular/arithgroup/congroup_generic.py b/src/sage/modular/arithgroup/congroup_generic.py index 16dd011ecde..f62b70fb4df 100644 --- a/src/sage/modular/arithgroup/congroup_generic.py +++ b/src/sage/modular/arithgroup/congroup_generic.py @@ -128,6 +128,9 @@ def is_CongruenceSubgroup(x): sage: from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup sage: is_CongruenceSubgroup(SL2Z) + doctest:warning... + DeprecationWarning: the function is_CongruenceSubgroup is deprecated; use 'isinstance(..., CongruenceSubgroupBase)' instead + See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_CongruenceSubgroup(Gamma0(13)) True @@ -142,6 +145,8 @@ def is_CongruenceSubgroup(x): sage: is_CongruenceSubgroup(SymmetricGroup(3)) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_CongruenceSubgroup is deprecated; use 'isinstance(..., CongruenceSubgroupBase)' instead") return isinstance(x, CongruenceSubgroupBase) diff --git a/src/sage/modular/arithgroup/congroup_sl2z.py b/src/sage/modular/arithgroup/congroup_sl2z.py index d870f207b38..f01adac2f75 100644 --- a/src/sage/modular/arithgroup/congroup_sl2z.py +++ b/src/sage/modular/arithgroup/congroup_sl2z.py @@ -36,10 +36,15 @@ def is_SL2Z(x): sage: from sage.modular.arithgroup.all import is_SL2Z sage: is_SL2Z(SL2Z) + doctest:warning... + DeprecationWarning: the function is_SL2Z is deprecated; use 'isinstance(..., SL2Z_class)' instead + See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_SL2Z(Gamma0(6)) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_SL2Z is deprecated; use 'isinstance(..., SL2Z_class)' instead") return isinstance(x, SL2Z_class) class SL2Z_class(Gamma0_class): diff --git a/src/sage/modular/dirichlet.py b/src/sage/modular/dirichlet.py index 3f871dadf91..8d27f117160 100644 --- a/src/sage/modular/dirichlet.py +++ b/src/sage/modular/dirichlet.py @@ -2575,12 +2575,17 @@ def is_DirichletGroup(x): sage: from sage.modular.dirichlet import is_DirichletGroup sage: is_DirichletGroup(DirichletGroup(11)) + doctest:warning... + DeprecationWarning: the function is_DirichletGroup is deprecated; use 'isinstance(..., DirichletGroup_class)' instead + See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_DirichletGroup(11) False sage: is_DirichletGroup(DirichletGroup(11).0) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_DirichletGroup is deprecated; use 'isinstance(..., DirichletGroup_class)' instead") return isinstance(x, DirichletGroup_class) diff --git a/src/sage/modular/modform/space.py b/src/sage/modular/modform/space.py index 7b1b156d2f9..ac0949ae866 100644 --- a/src/sage/modular/modform/space.py +++ b/src/sage/modular/modform/space.py @@ -93,12 +93,17 @@ def is_ModularFormsSpace(x): sage: from sage.modular.modform.space import is_ModularFormsSpace sage: is_ModularFormsSpace(ModularForms(11,2)) + doctest:warning... + DeprecationWarning: the function is_ModularFormsSpace is deprecated; use 'isinstance(..., ModularFormsSpace)' instead + See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_ModularFormsSpace(CuspForms(11,2)) True sage: is_ModularFormsSpace(3) False """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_ModularFormsSpace is deprecated; use 'isinstance(..., ModularFormsSpace)' instead") return isinstance(x, ModularFormsSpace) diff --git a/src/sage/modular/modsym/space.py b/src/sage/modular/modsym/space.py index c686922ff17..237a25da528 100644 --- a/src/sage/modular/modsym/space.py +++ b/src/sage/modular/modsym/space.py @@ -58,10 +58,15 @@ def is_ModularSymbolsSpace(x): sage: M = ModularForms(3, 2) sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M) + doctest:warning... + DeprecationWarning: the function is_ModularSymbolsSpace is deprecated; use 'isinstance(..., ModularForms)' instead + See https://github.com/sagemath/sage/issues/38035 for details. False sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M.modular_symbols(sign=1)) True """ + from sage.misc.superseded import deprecation + deprecation(38035, "the function is_ModularSymbolsSpace is deprecated; use 'isinstance(..., ModularForms)' instead") return isinstance(x, ModularSymbolsSpace) From b65ea36c01765bd337b2853bd2795bcef365899a Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Fri, 24 May 2024 09:49:21 -0700 Subject: [PATCH 6/7] git --no-pager grep -l 'deprecation(' src/sage/modular | xargs sed -i.bak '/ is deprecated; use /s/the function /The function /;/ is deprecated; use /s/ instead/ instead./' --- src/sage/modular/abvar/abvar.py | 4 ++-- src/sage/modular/arithgroup/arithgroup_generic.py | 4 ++-- src/sage/modular/arithgroup/congroup_gamma.py | 2 +- src/sage/modular/arithgroup/congroup_gamma0.py | 4 ++-- src/sage/modular/arithgroup/congroup_gamma1.py | 4 ++-- src/sage/modular/arithgroup/congroup_gammaH.py | 4 ++-- src/sage/modular/arithgroup/congroup_generic.py | 4 ++-- src/sage/modular/arithgroup/congroup_sl2z.py | 4 ++-- src/sage/modular/dirichlet.py | 4 ++-- src/sage/modular/modform/space.py | 4 ++-- src/sage/modular/modsym/space.py | 4 ++-- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/sage/modular/abvar/abvar.py b/src/sage/modular/abvar/abvar.py index 29d6670237d..43befc2b76b 100644 --- a/src/sage/modular/abvar/abvar.py +++ b/src/sage/modular/abvar/abvar.py @@ -92,7 +92,7 @@ def is_ModularAbelianVariety(x) -> bool: sage: from sage.modular.abvar.abvar import is_ModularAbelianVariety sage: is_ModularAbelianVariety(5) doctest:warning... - DeprecationWarning: the function is_ModularAbelianVariety is deprecated; use 'isinstance(..., ModularAbelianVariety_abstract)' instead + DeprecationWarning: The function is_ModularAbelianVariety is deprecated; use 'isinstance(..., ModularAbelianVariety_abstract)' instead. See https://github.com/sagemath/sage/issues/38035 for details. False sage: is_ModularAbelianVariety(J0(37)) @@ -105,7 +105,7 @@ def is_ModularAbelianVariety(x) -> bool: False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_ModularAbelianVariety is deprecated; use 'isinstance(..., ModularAbelianVariety_abstract)' instead") + deprecation(38035, "The function is_ModularAbelianVariety is deprecated; use 'isinstance(..., ModularAbelianVariety_abstract)' instead.") return isinstance(x, ModularAbelianVariety_abstract) diff --git a/src/sage/modular/arithgroup/arithgroup_generic.py b/src/sage/modular/arithgroup/arithgroup_generic.py index 3676e37329c..1dff2e85e0b 100644 --- a/src/sage/modular/arithgroup/arithgroup_generic.py +++ b/src/sage/modular/arithgroup/arithgroup_generic.py @@ -39,14 +39,14 @@ def is_ArithmeticSubgroup(x) -> bool: sage: from sage.modular.arithgroup.all import is_ArithmeticSubgroup sage: is_ArithmeticSubgroup(GL(2, GF(7))) doctest:warning... - DeprecationWarning: the function is_ArithmeticSubgroup is deprecated; use 'isinstance(..., ArithmeticSubgroup)' instead + DeprecationWarning: The function is_ArithmeticSubgroup is deprecated; use 'isinstance(..., ArithmeticSubgroup)' instead. See https://github.com/sagemath/sage/issues/38035 for details. False sage: is_ArithmeticSubgroup(Gamma0(4)) True """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_ArithmeticSubgroup is deprecated; use 'isinstance(..., ArithmeticSubgroup)' instead") + deprecation(38035, "The function is_ArithmeticSubgroup is deprecated; use 'isinstance(..., ArithmeticSubgroup)' instead.") return isinstance(x, ArithmeticSubgroup) diff --git a/src/sage/modular/arithgroup/congroup_gamma.py b/src/sage/modular/arithgroup/congroup_gamma.py index 375df5564c4..9a3a72589bf 100644 --- a/src/sage/modular/arithgroup/congroup_gamma.py +++ b/src/sage/modular/arithgroup/congroup_gamma.py @@ -320,7 +320,7 @@ def is_Gamma(x): True """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_Gamma is deprecated; use 'isinstance(..., Gamma_class)' instead") + deprecation(38035, "The function is_Gamma is deprecated; use 'isinstance(..., Gamma_class)' instead.") return isinstance(x, Gamma_class) diff --git a/src/sage/modular/arithgroup/congroup_gamma0.py b/src/sage/modular/arithgroup/congroup_gamma0.py index da5f213152e..cfa31675ffe 100644 --- a/src/sage/modular/arithgroup/congroup_gamma0.py +++ b/src/sage/modular/arithgroup/congroup_gamma0.py @@ -33,7 +33,7 @@ def is_Gamma0(x): sage: from sage.modular.arithgroup.all import is_Gamma0 sage: is_Gamma0(SL2Z) doctest:warning... - DeprecationWarning: the function is_Gamma0 is deprecated; use 'isinstance(..., Gamma0_class)' instead + DeprecationWarning: The function is_Gamma0 is deprecated; use 'isinstance(..., Gamma0_class)' instead. See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_Gamma0(Gamma0(13)) @@ -42,7 +42,7 @@ def is_Gamma0(x): False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_Gamma0 is deprecated; use 'isinstance(..., Gamma0_class)' instead") + deprecation(38035, "The function is_Gamma0 is deprecated; use 'isinstance(..., Gamma0_class)' instead.") return isinstance(x, Gamma0_class) diff --git a/src/sage/modular/arithgroup/congroup_gamma1.py b/src/sage/modular/arithgroup/congroup_gamma1.py index 4624cf06d2d..ca0be84dfd5 100644 --- a/src/sage/modular/arithgroup/congroup_gamma1.py +++ b/src/sage/modular/arithgroup/congroup_gamma1.py @@ -30,7 +30,7 @@ def is_Gamma1(x): sage: from sage.modular.arithgroup.all import is_Gamma1 sage: is_Gamma1(SL2Z) doctest:warning... - DeprecationWarning: the function is_Gamma1 is deprecated; use 'isinstance(..., Gamma1_class)' instead + DeprecationWarning: The function is_Gamma1 is deprecated; use 'isinstance(..., Gamma1_class)' instead. See https://github.com/sagemath/sage/issues/38035 for details. False sage: is_Gamma1(Gamma1(13)) @@ -43,7 +43,7 @@ def is_Gamma1(x): False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_Gamma1 is deprecated; use 'isinstance(..., Gamma1_class)' instead") + deprecation(38035, "The function is_Gamma1 is deprecated; use 'isinstance(..., Gamma1_class)' instead.") #from congroup_sl2z import is_SL2Z #return (isinstance(x, Gamma1_class) or is_SL2Z(x)) return isinstance(x, Gamma1_class) diff --git a/src/sage/modular/arithgroup/congroup_gammaH.py b/src/sage/modular/arithgroup/congroup_gammaH.py index de67663bb19..ed4ad744b78 100644 --- a/src/sage/modular/arithgroup/congroup_gammaH.py +++ b/src/sage/modular/arithgroup/congroup_gammaH.py @@ -101,7 +101,7 @@ def is_GammaH(x): sage: from sage.modular.arithgroup.all import is_GammaH sage: is_GammaH(GammaH(13, [2])) doctest:warning... - DeprecationWarning: the function is_GammaH is deprecated; use 'isinstance(..., GammaH_class)' instead + DeprecationWarning: The function is_GammaH is deprecated; use 'isinstance(..., GammaH_class)' instead. See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_GammaH(Gamma0(6)) @@ -112,7 +112,7 @@ def is_GammaH(x): False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_GammaH is deprecated; use 'isinstance(..., GammaH_class)' instead") + deprecation(38035, "The function is_GammaH is deprecated; use 'isinstance(..., GammaH_class)' instead.") return isinstance(x, GammaH_class) diff --git a/src/sage/modular/arithgroup/congroup_generic.py b/src/sage/modular/arithgroup/congroup_generic.py index f62b70fb4df..cbd368fba31 100644 --- a/src/sage/modular/arithgroup/congroup_generic.py +++ b/src/sage/modular/arithgroup/congroup_generic.py @@ -129,7 +129,7 @@ def is_CongruenceSubgroup(x): sage: from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup sage: is_CongruenceSubgroup(SL2Z) doctest:warning... - DeprecationWarning: the function is_CongruenceSubgroup is deprecated; use 'isinstance(..., CongruenceSubgroupBase)' instead + DeprecationWarning: The function is_CongruenceSubgroup is deprecated; use 'isinstance(..., CongruenceSubgroupBase)' instead. See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_CongruenceSubgroup(Gamma0(13)) @@ -146,7 +146,7 @@ def is_CongruenceSubgroup(x): False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_CongruenceSubgroup is deprecated; use 'isinstance(..., CongruenceSubgroupBase)' instead") + deprecation(38035, "The function is_CongruenceSubgroup is deprecated; use 'isinstance(..., CongruenceSubgroupBase)' instead.") return isinstance(x, CongruenceSubgroupBase) diff --git a/src/sage/modular/arithgroup/congroup_sl2z.py b/src/sage/modular/arithgroup/congroup_sl2z.py index f01adac2f75..1aa9e2dda33 100644 --- a/src/sage/modular/arithgroup/congroup_sl2z.py +++ b/src/sage/modular/arithgroup/congroup_sl2z.py @@ -37,14 +37,14 @@ def is_SL2Z(x): sage: from sage.modular.arithgroup.all import is_SL2Z sage: is_SL2Z(SL2Z) doctest:warning... - DeprecationWarning: the function is_SL2Z is deprecated; use 'isinstance(..., SL2Z_class)' instead + DeprecationWarning: The function is_SL2Z is deprecated; use 'isinstance(..., SL2Z_class)' instead. See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_SL2Z(Gamma0(6)) False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_SL2Z is deprecated; use 'isinstance(..., SL2Z_class)' instead") + deprecation(38035, "The function is_SL2Z is deprecated; use 'isinstance(..., SL2Z_class)' instead.") return isinstance(x, SL2Z_class) class SL2Z_class(Gamma0_class): diff --git a/src/sage/modular/dirichlet.py b/src/sage/modular/dirichlet.py index 8d27f117160..62e27a9352b 100644 --- a/src/sage/modular/dirichlet.py +++ b/src/sage/modular/dirichlet.py @@ -2576,7 +2576,7 @@ def is_DirichletGroup(x): sage: from sage.modular.dirichlet import is_DirichletGroup sage: is_DirichletGroup(DirichletGroup(11)) doctest:warning... - DeprecationWarning: the function is_DirichletGroup is deprecated; use 'isinstance(..., DirichletGroup_class)' instead + DeprecationWarning: The function is_DirichletGroup is deprecated; use 'isinstance(..., DirichletGroup_class)' instead. See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_DirichletGroup(11) @@ -2585,7 +2585,7 @@ def is_DirichletGroup(x): False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_DirichletGroup is deprecated; use 'isinstance(..., DirichletGroup_class)' instead") + deprecation(38035, "The function is_DirichletGroup is deprecated; use 'isinstance(..., DirichletGroup_class)' instead.") return isinstance(x, DirichletGroup_class) diff --git a/src/sage/modular/modform/space.py b/src/sage/modular/modform/space.py index ac0949ae866..8353b563f25 100644 --- a/src/sage/modular/modform/space.py +++ b/src/sage/modular/modform/space.py @@ -94,7 +94,7 @@ def is_ModularFormsSpace(x): sage: from sage.modular.modform.space import is_ModularFormsSpace sage: is_ModularFormsSpace(ModularForms(11,2)) doctest:warning... - DeprecationWarning: the function is_ModularFormsSpace is deprecated; use 'isinstance(..., ModularFormsSpace)' instead + DeprecationWarning: The function is_ModularFormsSpace is deprecated; use 'isinstance(..., ModularFormsSpace)' instead. See https://github.com/sagemath/sage/issues/38035 for details. True sage: is_ModularFormsSpace(CuspForms(11,2)) @@ -103,7 +103,7 @@ def is_ModularFormsSpace(x): False """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_ModularFormsSpace is deprecated; use 'isinstance(..., ModularFormsSpace)' instead") + deprecation(38035, "The function is_ModularFormsSpace is deprecated; use 'isinstance(..., ModularFormsSpace)' instead.") return isinstance(x, ModularFormsSpace) diff --git a/src/sage/modular/modsym/space.py b/src/sage/modular/modsym/space.py index 237a25da528..addc05fbe8b 100644 --- a/src/sage/modular/modsym/space.py +++ b/src/sage/modular/modsym/space.py @@ -59,14 +59,14 @@ def is_ModularSymbolsSpace(x): sage: M = ModularForms(3, 2) sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M) doctest:warning... - DeprecationWarning: the function is_ModularSymbolsSpace is deprecated; use 'isinstance(..., ModularForms)' instead + DeprecationWarning: The function is_ModularSymbolsSpace is deprecated; use 'isinstance(..., ModularForms)' instead. See https://github.com/sagemath/sage/issues/38035 for details. False sage: sage.modular.modsym.space.is_ModularSymbolsSpace(M.modular_symbols(sign=1)) True """ from sage.misc.superseded import deprecation - deprecation(38035, "the function is_ModularSymbolsSpace is deprecated; use 'isinstance(..., ModularForms)' instead") + deprecation(38035, "The function is_ModularSymbolsSpace is deprecated; use 'isinstance(..., ModularForms)' instead.") return isinstance(x, ModularSymbolsSpace) From a948b57945cf863fe7e94b3ec24bbcdac7fc0ed1 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 25 May 2024 16:43:29 -0700 Subject: [PATCH 7/7] src/sage/modular/arithgroup/all.py: Fix rebase --- src/sage/modular/arithgroup/all.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/sage/modular/arithgroup/all.py b/src/sage/modular/arithgroup/all.py index 78bb1dfca7e..51d05664e0d 100644 --- a/src/sage/modular/arithgroup/all.py +++ b/src/sage/modular/arithgroup/all.py @@ -1,13 +1,13 @@ # Note: the is_xxx functions are imported to here, but not from here up to sage.modular.all, so # they are invisible to the user but easy to import all in one go by other code that needs them. -from sage.modular.arithgroup_generic import is_ArithmeticSubgroup, ArithmeticSubgroup -from sage.modular.congroup_generic import is_CongruenceSubgroup, CongruenceSubgroupBase, CongruenceSubgroup_constructor as CongruenceSubgroup -from sage.modular.congroup_gammaH import GammaH_constructor as GammaH, is_GammaH, GammaH_class -from sage.modular.congroup_gamma1 import Gamma1_constructor as Gamma1, is_Gamma1, Gamma1_class -from sage.modular.congroup_gamma0 import Gamma0_constructor as Gamma0, is_Gamma0, Gamma0_class -from sage.modular.congroup_gamma import Gamma_constructor as Gamma, is_Gamma, Gamma_class -from sage.modular.congroup_sl2z import SL2Z, is_SL2Z, SL2Z_class +from sage.modular.arithgroup.arithgroup_generic import is_ArithmeticSubgroup, ArithmeticSubgroup +from sage.modular.arithgroup.congroup_generic import is_CongruenceSubgroup, CongruenceSubgroupBase, CongruenceSubgroup_constructor as CongruenceSubgroup +from sage.modular.arithgroup.congroup_gammaH import GammaH_constructor as GammaH, is_GammaH, GammaH_class +from sage.modular.arithgroup.congroup_gamma1 import Gamma1_constructor as Gamma1, is_Gamma1, Gamma1_class +from sage.modular.arithgroup.congroup_gamma0 import Gamma0_constructor as Gamma0, is_Gamma0, Gamma0_class +from sage.modular.arithgroup.congroup_gamma import Gamma_constructor as Gamma, is_Gamma, Gamma_class +from sage.modular.arithgroup.congroup_sl2z import SL2Z, is_SL2Z, SL2Z_class from sage.misc.lazy_import import lazy_import lazy_import('sage.modular.arithgroup.arithgroup_perm', 'ArithmeticSubgroup_Permutation')