passagemath-schemes 10.5.44__cp313-cp313-musllinux_1_2_aarch64.whl → 10.6.42__cp313-cp313-musllinux_1_2_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. passagemath_schemes/__init__.py +3 -0
  2. {passagemath_schemes-10.5.44.dist-info → passagemath_schemes-10.6.42.dist-info}/METADATA +41 -41
  3. {passagemath_schemes-10.5.44.dist-info → passagemath_schemes-10.6.42.dist-info}/METADATA.bak +42 -42
  4. {passagemath_schemes-10.5.44.dist-info → passagemath_schemes-10.6.42.dist-info}/RECORD +158 -139
  5. passagemath_schemes-10.6.42.dist-info/top_level.txt +3 -0
  6. passagemath_schemes.libs/{libflint-7dd7ad94.so.19.0.0 → libflint-edf7fb90.so.22.0.0} +0 -0
  7. passagemath_schemes.libs/{libgcc_s-69c45f16.so.1 → libgcc_s-2d945d6c.so.1} +0 -0
  8. passagemath_schemes.libs/{libgmp-8e78bd9b.so.10.5.0 → libgmp-28992bcb.so.10.5.0} +0 -0
  9. passagemath_schemes.libs/{libgmpxx-e6de26f1.so.4.7.0 → libgmpxx-fecb01a9.so.4.7.0} +0 -0
  10. passagemath_schemes.libs/{libmpfr-5ff10580.so.6.2.1 → libmpfr-1fc8ea36.so.6.2.2} +0 -0
  11. passagemath_schemes.libs/{libstdc++-1f1a71be.so.6.0.33 → libstdc++-85f2cd6d.so.6.0.33} +0 -0
  12. sage/all__sagemath_schemes.py +3 -2
  13. sage/databases/all__sagemath_schemes.py +0 -10
  14. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +4 -4
  15. sage/dynamics/arithmetic_dynamics/generic_ds.py +3 -3
  16. sage/dynamics/arithmetic_dynamics/projective_ds.py +7 -7
  17. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-313-aarch64-linux-musl.so +0 -0
  18. sage/dynamics/arithmetic_dynamics/wehlerK3.py +18 -18
  19. sage/lfunctions/zero_sums.cpython-313-aarch64-linux-musl.so +0 -0
  20. sage/modular/abvar/abvar.py +12 -11
  21. sage/modular/abvar/constructor.py +3 -3
  22. sage/modular/abvar/cuspidal_subgroup.py +5 -6
  23. sage/modular/abvar/finite_subgroup.py +20 -18
  24. sage/modular/abvar/homology.py +1 -2
  25. sage/modular/abvar/homspace.py +1 -1
  26. sage/modular/abvar/lseries.py +3 -3
  27. sage/modular/abvar/morphism.py +1 -1
  28. sage/modular/abvar/torsion_point.py +1 -1
  29. sage/modular/abvar/torsion_subgroup.py +1 -1
  30. sage/modular/arithgroup/arithgroup_element.cpython-313-aarch64-linux-musl.so +0 -0
  31. sage/modular/arithgroup/arithgroup_perm.py +16 -16
  32. sage/modular/arithgroup/congroup.cpython-313-aarch64-linux-musl.so +0 -0
  33. sage/modular/arithgroup/congroup_gamma0.py +2 -2
  34. sage/modular/arithgroup/congroup_gamma1.py +4 -4
  35. sage/modular/arithgroup/congroup_gammaH.py +2 -2
  36. sage/modular/arithgroup/congroup_generic.py +2 -3
  37. sage/modular/arithgroup/congroup_sl2z.py +3 -3
  38. sage/modular/arithgroup/farey_symbol.cpython-313-aarch64-linux-musl.so +0 -0
  39. sage/modular/arithgroup/farey_symbol.pyx +1 -2
  40. sage/modular/btquotients/btquotient.py +4 -5
  41. sage/modular/btquotients/pautomorphicform.py +2 -2
  42. sage/modular/cusps.py +6 -4
  43. sage/modular/cusps_nf.py +7 -8
  44. sage/modular/dirichlet.py +34 -43
  45. sage/modular/drinfeld_modform/element.py +4 -4
  46. sage/modular/drinfeld_modform/ring.py +12 -12
  47. sage/modular/drinfeld_modform/tutorial.py +1 -1
  48. sage/modular/hecke/algebra.py +7 -5
  49. sage/modular/hecke/ambient_module.py +2 -2
  50. sage/modular/hecke/element.py +7 -2
  51. sage/modular/hecke/module.py +9 -9
  52. sage/modular/hecke/submodule.py +6 -8
  53. sage/modular/hypergeometric_misc.cpython-313-aarch64-linux-musl.so +0 -0
  54. sage/modular/hypergeometric_misc.pyx +3 -2
  55. sage/modular/hypergeometric_motive.py +2 -2
  56. sage/modular/local_comp/local_comp.py +19 -11
  57. sage/modular/local_comp/type_space.py +10 -8
  58. sage/modular/modform/ambient.py +4 -3
  59. sage/modular/modform/cuspidal_submodule.py +2 -2
  60. sage/modular/modform/element.py +72 -72
  61. sage/modular/modform/half_integral.py +1 -1
  62. sage/modular/modform/l_series_gross_zagier.py +3 -0
  63. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-313-aarch64-linux-musl.so +0 -0
  64. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +5 -2
  65. sage/modular/modform/ring.py +10 -12
  66. sage/modular/modform/space.py +18 -21
  67. sage/modular/modform/weight1.py +1 -2
  68. sage/modular/modform_hecketriangle/abstract_ring.py +7 -14
  69. sage/modular/modform_hecketriangle/abstract_space.py +63 -66
  70. sage/modular/modform_hecketriangle/graded_ring_element.py +11 -12
  71. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +82 -84
  72. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +2 -2
  73. sage/modular/modform_hecketriangle/readme.py +9 -11
  74. sage/modular/modform_hecketriangle/series_constructor.py +10 -18
  75. sage/modular/modform_hecketriangle/space.py +29 -30
  76. sage/modular/modform_hecketriangle/subspace.py +9 -7
  77. sage/modular/modsym/ambient.py +13 -20
  78. sage/modular/modsym/boundary.py +2 -2
  79. sage/modular/modsym/manin_symbol.cpython-313-aarch64-linux-musl.so +0 -0
  80. sage/modular/modsym/manin_symbol_list.py +3 -7
  81. sage/modular/modsym/relation_matrix_pyx.cpython-313-aarch64-linux-musl.so +0 -0
  82. sage/modular/modsym/space.py +10 -22
  83. sage/modular/modsym/subspace.py +5 -7
  84. sage/modular/multiple_zeta.py +11 -13
  85. sage/modular/multiple_zeta_F_algebra.py +4 -6
  86. sage/modular/overconvergent/genus0.py +5 -4
  87. sage/modular/overconvergent/hecke_series.py +2 -2
  88. sage/modular/pollack_stevens/distributions.py +2 -2
  89. sage/modular/pollack_stevens/fund_domain.py +26 -29
  90. sage/modular/pollack_stevens/manin_map.py +15 -10
  91. sage/modular/pollack_stevens/modsym.py +18 -18
  92. sage/modular/quasimodform/element.py +10 -10
  93. sage/modular/quasimodform/ring.py +22 -22
  94. sage/modular/ssmod/ssmod.py +5 -12
  95. sage/rings/polynomial/binary_form_reduce.py +1 -1
  96. sage/schemes/curves/affine_curve.py +4 -4
  97. sage/schemes/curves/plane_curve_arrangement.py +28 -24
  98. sage/schemes/elliptic_curves/BSD.py +1 -1
  99. sage/schemes/elliptic_curves/addition_formulas_ring.py +4 -0
  100. sage/schemes/elliptic_curves/cm.py +1 -1
  101. sage/schemes/elliptic_curves/constructor.py +3 -3
  102. sage/schemes/elliptic_curves/ell_egros.py +1 -1
  103. sage/schemes/elliptic_curves/ell_field.py +57 -46
  104. sage/schemes/elliptic_curves/ell_finite_field.py +138 -26
  105. sage/schemes/elliptic_curves/ell_local_data.py +9 -9
  106. sage/schemes/elliptic_curves/ell_number_field.py +25 -24
  107. sage/schemes/elliptic_curves/ell_point.py +21 -22
  108. sage/schemes/elliptic_curves/ell_rational_field.py +38 -28
  109. sage/schemes/elliptic_curves/formal_group.py +1 -1
  110. sage/schemes/elliptic_curves/heegner.py +11 -8
  111. sage/schemes/elliptic_curves/height.py +26 -23
  112. sage/schemes/elliptic_curves/hom.py +2 -1
  113. sage/schemes/elliptic_curves/hom_composite.py +11 -11
  114. sage/schemes/elliptic_curves/hom_frobenius.py +8 -8
  115. sage/schemes/elliptic_curves/hom_sum.py +7 -1
  116. sage/schemes/elliptic_curves/hom_velusqrt.py +13 -7
  117. sage/schemes/elliptic_curves/homset.py +2 -2
  118. sage/schemes/elliptic_curves/isogeny_small_degree.py +1 -1
  119. sage/schemes/elliptic_curves/mod_poly.py +12 -5
  120. sage/schemes/elliptic_curves/mod_sym_num.cpython-313-aarch64-linux-musl.so +0 -0
  121. sage/schemes/elliptic_curves/padic_lseries.py +25 -13
  122. sage/schemes/elliptic_curves/padics.py +71 -63
  123. sage/schemes/elliptic_curves/period_lattice.py +78 -27
  124. sage/schemes/elliptic_curves/period_lattice_region.cpython-313-aarch64-linux-musl.so +0 -0
  125. sage/schemes/elliptic_curves/sha_tate.py +1 -1
  126. sage/schemes/elliptic_curves/weierstrass_morphism.py +2 -2
  127. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +1 -1
  128. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +1 -1
  129. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +10 -20
  130. sage/schemes/jacobians/abstract_jacobian.py +1 -1
  131. sage/schemes/plane_conics/con_field.py +42 -42
  132. sage/schemes/plane_conics/con_rational_field.py +1 -1
  133. sage/schemes/riemann_surfaces/riemann_surface.py +8 -8
  134. sage_wheels/share/cremona/cremona_mini.db +0 -0
  135. sage_wheels/share/ellcurves/rank0 +30427 -0
  136. sage_wheels/share/ellcurves/rank1 +31871 -0
  137. sage_wheels/share/ellcurves/rank10 +6 -0
  138. sage_wheels/share/ellcurves/rank11 +6 -0
  139. sage_wheels/share/ellcurves/rank12 +1 -0
  140. sage_wheels/share/ellcurves/rank14 +1 -0
  141. sage_wheels/share/ellcurves/rank15 +1 -0
  142. sage_wheels/share/ellcurves/rank17 +1 -0
  143. sage_wheels/share/ellcurves/rank19 +1 -0
  144. sage_wheels/share/ellcurves/rank2 +2388 -0
  145. sage_wheels/share/ellcurves/rank20 +1 -0
  146. sage_wheels/share/ellcurves/rank21 +1 -0
  147. sage_wheels/share/ellcurves/rank22 +1 -0
  148. sage_wheels/share/ellcurves/rank23 +1 -0
  149. sage_wheels/share/ellcurves/rank24 +1 -0
  150. sage_wheels/share/ellcurves/rank28 +1 -0
  151. sage_wheels/share/ellcurves/rank3 +836 -0
  152. sage_wheels/share/ellcurves/rank4 +10 -0
  153. sage_wheels/share/ellcurves/rank5 +5 -0
  154. sage_wheels/share/ellcurves/rank6 +5 -0
  155. sage_wheels/share/ellcurves/rank7 +5 -0
  156. sage_wheels/share/ellcurves/rank8 +6 -0
  157. sage_wheels/share/ellcurves/rank9 +7 -0
  158. passagemath_schemes-10.5.44.dist-info/top_level.txt +0 -2
  159. sage/databases/db_modular_polynomials.py +0 -250
  160. sage/databases/stein_watkins.py +0 -363
  161. sage/modular/modsym/p1list.cpython-313-aarch64-linux-musl.so +0 -0
  162. sage/modular/modsym/p1list.pxd +0 -29
  163. sage/modular/modsym/p1list.pyx +0 -1372
  164. {passagemath_schemes-10.5.44.dist-info → passagemath_schemes-10.6.42.dist-info}/WHEEL +0 -0
@@ -519,10 +519,12 @@ class HeckeAlgebra_base(CachedRepresentation, Parent):
519
519
  trace_matrix[i, j] = trace_matrix[j, i] = basis[i].matrix().trace_of_product(basis[j].matrix())
520
520
  return trace_matrix.det()
521
521
 
522
- def gens(self):
522
+ def gens(self) -> Iterator:
523
523
  r"""
524
- Return a generator over all Hecke operator `T_n` for
525
- `n = 1, 2, 3, \ldots`. This is infinite.
524
+ Return a generator over all Hecke operator `T_n`
525
+ for `n = 1, 2, 3, \ldots`.
526
+
527
+ This is infinite.
526
528
 
527
529
  EXAMPLES::
528
530
 
@@ -627,9 +629,9 @@ class HeckeAlgebra_full(HeckeAlgebra_base):
627
629
  return NotImplemented
628
630
  return richcmp(self.module(), other.module(), op)
629
631
 
630
- def is_anemic(self):
632
+ def is_anemic(self) -> bool:
631
633
  """
632
- Return False, since this the full Hecke algebra.
634
+ Return ``False``, since this the full Hecke algebra.
633
635
 
634
636
  EXAMPLES::
635
637
 
@@ -659,7 +659,7 @@ class AmbientHeckeModule(module.HeckeModule_free_module):
659
659
  AmbientHeckeModule.new_submodule(self, p)
660
660
  return self.__is_new[p]
661
661
 
662
- def is_old(self, p=None):
662
+ def is_old(self, p=None) -> bool:
663
663
  r"""
664
664
  Return ``True`` if this module is entirely old.
665
665
 
@@ -678,7 +678,7 @@ class AmbientHeckeModule(module.HeckeModule_free_module):
678
678
  self.old_submodule(p)
679
679
  return self.__is_old[p]
680
680
 
681
- def is_submodule(self, V):
681
+ def is_submodule(self, V) -> bool:
682
682
  """
683
683
  Return ``True`` if and only if ``self`` is a submodule of ``V``.
684
684
 
@@ -25,8 +25,13 @@ AUTHORS:
25
25
  # https://www.gnu.org/licenses/
26
26
  # ****************************************************************************
27
27
 
28
- from sage.structure.richcmp import richcmp, op_NE
28
+ try:
29
+ from typing import Self # type: ignore (Python >= 3.11)
30
+ except ImportError:
31
+ from typing_extensions import Self # type: ignore (Python 3.10)
32
+
29
33
  from sage.structure.element import ModuleElement
34
+ from sage.structure.richcmp import op_NE, richcmp
30
35
 
31
36
 
32
37
  def is_HeckeModuleElement(x):
@@ -210,7 +215,7 @@ class HeckeModuleElement(ModuleElement):
210
215
  """
211
216
  return self.parent()(-self.element())
212
217
 
213
- def _pos_(self):
218
+ def _pos_(self) -> Self:
214
219
  """
215
220
  EXAMPLES::
216
221
 
@@ -321,7 +321,7 @@ class HeckeModule_generic(Module):
321
321
  sage: sage.modular.hecke.module.HeckeModule_generic(QQ, 10).character() is None
322
322
  True
323
323
  """
324
- return None
324
+ return
325
325
 
326
326
  def dimension(self):
327
327
  r"""
@@ -357,7 +357,7 @@ class HeckeModule_generic(Module):
357
357
  """
358
358
  return algebra.HeckeAlgebra(self)
359
359
 
360
- def is_zero(self):
360
+ def is_zero(self) -> bool:
361
361
  """
362
362
  Return ``True`` if this Hecke module has dimension 0.
363
363
 
@@ -374,7 +374,7 @@ class HeckeModule_generic(Module):
374
374
  """
375
375
  return self.dimension() == 0
376
376
 
377
- def is_full_hecke_module(self):
377
+ def is_full_hecke_module(self) -> bool:
378
378
  """
379
379
  Return ``True`` if this space is invariant under all Hecke operators.
380
380
 
@@ -405,7 +405,7 @@ class HeckeModule_generic(Module):
405
405
  self._is_full_hecke_module = True
406
406
  return True
407
407
 
408
- def is_hecke_invariant(self, n):
408
+ def is_hecke_invariant(self, n) -> bool:
409
409
  """
410
410
  Return ``True`` if ``self`` is invariant under the Hecke operator `T_n`.
411
411
 
@@ -1342,7 +1342,7 @@ class HeckeModule_free_module(HeckeModule_generic):
1342
1342
  except AttributeError:
1343
1343
  return -1
1344
1344
 
1345
- def gens(self):
1345
+ def gens(self) -> tuple:
1346
1346
  """
1347
1347
  Return a tuple of basis elements of ``self``.
1348
1348
 
@@ -1483,7 +1483,7 @@ class HeckeModule_free_module(HeckeModule_generic):
1483
1483
  """
1484
1484
  return self.hecke_operator(n).charpoly(var)
1485
1485
 
1486
- def is_simple(self):
1486
+ def is_simple(self) -> bool:
1487
1487
  r"""
1488
1488
  Return ``True`` if this space is simple as a module for the
1489
1489
  corresponding Hecke algebra.
@@ -1500,7 +1500,7 @@ class HeckeModule_free_module(HeckeModule_generic):
1500
1500
  """
1501
1501
  raise NotImplementedError
1502
1502
 
1503
- def is_splittable(self):
1503
+ def is_splittable(self) -> bool:
1504
1504
  """
1505
1505
  Return ``True`` if and only if only it is possible to split
1506
1506
  off a nontrivial generalized eigenspace of ``self`` as the
@@ -1521,7 +1521,7 @@ class HeckeModule_free_module(HeckeModule_generic):
1521
1521
  self.decomposition(anemic=False)
1522
1522
  return self.__is_splittable
1523
1523
 
1524
- def is_submodule(self, other):
1524
+ def is_submodule(self, other) -> bool:
1525
1525
  r"""
1526
1526
  Return ``True`` if ``self`` is a submodule of ``other``.
1527
1527
 
@@ -1540,7 +1540,7 @@ class HeckeModule_free_module(HeckeModule_generic):
1540
1540
  return (self.ambient_free_module() == other.ambient_free_module() and
1541
1541
  self.free_module().is_submodule(other.free_module()))
1542
1542
 
1543
- def is_splittable_anemic(self):
1543
+ def is_splittable_anemic(self) -> bool:
1544
1544
  """
1545
1545
  Return ``True`` if and only if only it is possible to split off a
1546
1546
  nontrivial generalized eigenspace of ``self`` as the kernel of some
@@ -388,8 +388,7 @@ class HeckeSubmodule(module.HeckeModule_free_module):
388
388
  break
389
389
 
390
390
  if V.rank() + self.rank() == A.rank():
391
- C = A.submodule(V, check=False)
392
- return C
391
+ return A.submodule(V, check=False)
393
392
 
394
393
  # first attempt to compute the complement failed, we now try
395
394
  # the following naive approach: decompose the ambient space,
@@ -524,8 +523,7 @@ class HeckeSubmodule(module.HeckeModule_free_module):
524
523
  if self.complement.is_in_cache():
525
524
  verbose('This module knows its complement already -- cheating in dual_free_module')
526
525
  C = self.complement()
527
- V = C.basis_matrix().right_kernel()
528
- return V
526
+ return C.basis_matrix().right_kernel()
529
527
 
530
528
  verbose("computing dual")
531
529
 
@@ -677,7 +675,7 @@ class HeckeSubmodule(module.HeckeModule_free_module):
677
675
 
678
676
  return M
679
677
 
680
- def is_ambient(self):
678
+ def is_ambient(self) -> bool:
681
679
  r"""
682
680
  Return ``True`` if ``self`` is an ambient space of modular symbols.
683
681
 
@@ -693,7 +691,7 @@ class HeckeSubmodule(module.HeckeModule_free_module):
693
691
  """
694
692
  return self.free_module() == self.ambient_hecke_module().free_module()
695
693
 
696
- def is_new(self, p=None):
694
+ def is_new(self, p=None) -> bool:
697
695
  """
698
696
  Return ``True`` if this Hecke module is `p`-new. If `p` is None,
699
697
  returns ``True`` if it is new.
@@ -715,7 +713,7 @@ class HeckeSubmodule(module.HeckeModule_free_module):
715
713
  self.__is_new[p] = self.is_submodule(N)
716
714
  return self.__is_new[p]
717
715
 
718
- def is_old(self, p=None):
716
+ def is_old(self, p=None) -> bool:
719
717
  """
720
718
  Return ``True`` if this Hecke module is `p`-old. If `p` is ``None``,
721
719
  returns ``True`` if it is old.
@@ -740,7 +738,7 @@ class HeckeSubmodule(module.HeckeModule_free_module):
740
738
  self.__is_old[p] = self.is_submodule(O)
741
739
  return self.__is_old[p]
742
740
 
743
- def is_submodule(self, V):
741
+ def is_submodule(self, V) -> bool:
744
742
  """
745
743
  Return ``True`` if and only if ``self`` is a submodule of V.
746
744
 
@@ -1,7 +1,8 @@
1
1
  # sage_setup: distribution = sagemath-schemes
2
2
  """
3
- Some utility routines for the hypergeometric motives package that benefit
4
- significantly from Cythonization.
3
+ Utility routines for hypergeometric motives
4
+
5
+ These are functions that benefit significantly from Cythonization.
5
6
  """
6
7
  from cpython cimport array
7
8
  from cysignals.signals cimport sig_check
@@ -1164,7 +1164,7 @@ class HypergeometricData:
1164
1164
  2-d lattice polytope in 2-d lattice M
1165
1165
  sage: P.polyhedron().f_vector()
1166
1166
  (1, 4, 4, 1)
1167
- sage: len(P.points())
1167
+ sage: len(P.points()) # needs palp
1168
1168
  7
1169
1169
 
1170
1170
  The Chebyshev example from [RV2019]_::
@@ -1172,7 +1172,7 @@ class HypergeometricData:
1172
1172
  sage: H = Hyp(gamma_list=[-30, -1, 6, 10, 15])
1173
1173
  sage: P = H.lattice_polytope(); P
1174
1174
  3-d lattice polytope in 3-d lattice M
1175
- sage: len(P.points())
1175
+ sage: len(P.points()) # needs palp
1176
1176
  19
1177
1177
  sage: P.polyhedron().f_vector()
1178
1178
  (1, 5, 9, 6, 1)
@@ -21,22 +21,31 @@ AUTHORS:
21
21
  - Jared Weinstein
22
22
  """
23
23
 
24
- from sage.structure.sage_object import SageObject
25
- from sage.rings.integer_ring import ZZ
26
- from sage.rings.polynomial.polynomial_ring import polygen
27
- from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
24
+ try:
25
+ from typing import Self # type: ignore (Python >= 3.11)
26
+ except ImportError:
27
+ from typing_extensions import Self # type: ignore (Python 3.10)
28
+
28
29
  from sage.misc.abstract_method import abstract_method
29
30
  from sage.misc.cachefunc import cached_method
31
+ from sage.misc.flatten import flatten
30
32
  from sage.misc.lazy_import import lazy_import
31
33
  from sage.misc.verbose import verbose
32
- from sage.misc.flatten import flatten
33
34
  from sage.modular.modform.element import Newform
35
+ from sage.rings.integer_ring import ZZ
36
+ from sage.rings.polynomial.polynomial_ring import polygen
37
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
38
+ from sage.structure.sage_object import SageObject
34
39
  from sage.structure.sequence import Sequence
35
40
 
36
41
  lazy_import('sage.rings.qqbar', 'QQbar')
37
42
 
43
+ from .smoothchar import (
44
+ SmoothCharacterGroupQp,
45
+ SmoothCharacterGroupRamifiedQuadratic,
46
+ SmoothCharacterGroupUnramifiedQuadratic,
47
+ )
38
48
  from .type_space import TypeSpace
39
- from .smoothchar import SmoothCharacterGroupQp, SmoothCharacterGroupUnramifiedQuadratic, SmoothCharacterGroupRamifiedQuadratic
40
49
 
41
50
 
42
51
  def LocalComponent(f, p, twist_factor=None):
@@ -321,7 +330,7 @@ class PrimitiveLocalComponent(LocalComponentBase):
321
330
  Base class for primitive (twist-minimal) local components.
322
331
  """
323
332
 
324
- def is_primitive(self):
333
+ def is_primitive(self) -> bool:
325
334
  r"""
326
335
  Return ``True`` if this local component is primitive (has minimal level
327
336
  among its character twists).
@@ -333,7 +342,7 @@ class PrimitiveLocalComponent(LocalComponentBase):
333
342
  """
334
343
  return True
335
344
 
336
- def minimal_twist(self):
345
+ def minimal_twist(self) -> Self:
337
346
  r"""
338
347
  Return a twist of this local component which has the minimal possible
339
348
  conductor.
@@ -801,8 +810,7 @@ class PrimitiveSupercuspidal(PrimitiveLocalComponent):
801
810
  verbose(" chisB FAILED", level=1)
802
811
  B_fail = 1
803
812
  break
804
- else:
805
- verbose(" Trace identity check works for both", level=1)
813
+ verbose(" Trace identity check works for both", level=1)
806
814
 
807
815
  if B_fail and not A_fail:
808
816
  chi1, chi2 = chisA
@@ -965,7 +973,7 @@ class ImprimitiveLocalComponent(LocalComponentBase):
965
973
  self._min_twist = min_twist
966
974
  self._chi = chi
967
975
 
968
- def is_primitive(self):
976
+ def is_primitive(self) -> bool:
969
977
  r"""
970
978
  Return ``True`` if this local component is primitive (has minimal level
971
979
  among its character twists).
@@ -320,19 +320,20 @@ class TypeSpace(SageObject):
320
320
  # time-critical, and getting it wrong can lead to subtle bugs.
321
321
  p = self.prime()
322
322
  r = self.conductor()
323
- d = max(self.character_conductor(), r//2)
323
+ d = max(self.character_conductor(), r // 2)
324
324
  n = self.tame_level()
325
325
  chi = self.form().character()
326
326
  tame_H = [i for i in chi.kernel() if (i % p**r) == 1]
327
327
  wild_H = [crt(x, 1, p**r, n) for x in range(p**r) if x % (p**d) == 1]
328
328
  return GammaH(n * p**r, tame_H + wild_H)
329
329
 
330
- ###############################################################################
331
- # Testing minimality: is this form a twist of a form of strictly smaller level?
332
- ###############################################################################
330
+ ##########################################################################
331
+ # Testing minimality:
332
+ # is this form a twist of a form of strictly smaller level?
333
+ ##########################################################################
333
334
 
334
335
  @cached_method
335
- def is_minimal(self):
336
+ def is_minimal(self) -> bool:
336
337
  r"""
337
338
  Return ``True`` if there exists a newform `g` of level strictly smaller
338
339
  than `N`, and a Dirichlet character `\chi` of `p`-power conductor, such
@@ -471,13 +472,14 @@ class TypeSpace(SageObject):
471
472
  g3 = [f * g2[0], g2[1], f**2 * g2[2], f*g2[3]]
472
473
  A = self.t_space.ambient()
473
474
  mm = A._action_on_modular_symbols(g3).restrict(self.t_space.free_module()).transpose()
474
- m = mm / ZZ(f**(self.form().weight()-2))
475
- return m
475
+ return mm / ZZ(f**(self.form().weight() - 2))
476
476
 
477
477
  def _rho_unramified(self, g):
478
478
  r"""
479
479
  Calculate the action of ``g`` on the type space, in the unramified (even
480
- level) case. Uses the two standard generators, and a solution of the
480
+ level) case.
481
+
482
+ This uses the two standard generators, and a solution of the
481
483
  word problem in `\SL_2(\ZZ / p^u \ZZ)`.
482
484
 
483
485
  INPUT:
@@ -178,8 +178,9 @@ class ModularFormsAmbient(space.ModularFormsSpace,
178
178
  1 + q^3 + q^4 + 2*q^5 + O(q^6)]
179
179
  """
180
180
  from . import constructor
181
- M = constructor.ModularForms(self.group(), self.weight(), base_ring, prec=self.prec(), eis_only=self._eis_only)
182
- return M
181
+ return constructor.ModularForms(self.group(), self.weight(),
182
+ base_ring, prec=self.prec(),
183
+ eis_only=self._eis_only)
183
184
 
184
185
  @cached_method
185
186
  def dimension(self):
@@ -277,7 +278,7 @@ class ModularFormsAmbient(space.ModularFormsSpace,
277
278
  """
278
279
  return self
279
280
 
280
- def is_ambient(self):
281
+ def is_ambient(self) -> bool:
281
282
  """
282
283
  Return ``True`` if this an ambient space of modular forms.
283
284
 
@@ -99,7 +99,7 @@ class CuspidalSubmodule(ModularFormsSubmodule):
99
99
  """
100
100
  raise NotImplementedError('q-expansion basis not implemented for "%s"' % self)
101
101
 
102
- def _repr_(self):
102
+ def _repr_(self) -> str:
103
103
  """
104
104
  Return the string representation of ``self``.
105
105
 
@@ -110,7 +110,7 @@ class CuspidalSubmodule(ModularFormsSubmodule):
110
110
  """
111
111
  return "Cuspidal subspace of dimension %s of %s" % (self.dimension(), self.ambient_module())
112
112
 
113
- def is_cuspidal(self):
113
+ def is_cuspidal(self) -> bool:
114
114
  """
115
115
  Return ``True`` since spaces of cusp forms are cuspidal.
116
116