Skip to content

Commit 04e515b

Browse files
author
Matthias Koeppe
committed
sage.modular: Modularization fixes for imports
1 parent 0ccf195 commit 04e515b

24 files changed

+135
-70
lines changed

src/sage/modular/abvar/abvar.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
from copy import copy
3434
from random import randrange
3535

36+
import sage.rings.abc
37+
3638
from sage.arith.functions import lcm as LCM
3739
from sage.arith.misc import divisors, next_prime, is_prime
3840
from sage.categories.modular_abelian_varieties import ModularAbelianVarieties
@@ -55,7 +57,6 @@
5557
from sage.rings.integer import Integer
5658
from sage.rings.integer_ring import ZZ
5759
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
58-
from sage.rings.qqbar import QQbar
5960
from sage.rings.rational_field import QQ
6061
from sage.rings.ring import is_Ring
6162
from sage.schemes.elliptic_curves.constructor import EllipticCurve
@@ -66,6 +67,8 @@
6667

6768
lazy_import('sage.databases.cremona',
6869
['cremona_letter_code', 'CremonaDatabase'])
70+
lazy_import('sage.rings.qqbar', 'QQbar')
71+
6972

7073
from . import homspace
7174
from . import lseries
@@ -798,7 +801,7 @@ def _Hom_(self, B, cat=None):
798801
L = B.base_field()
799802
if K == L:
800803
F = K
801-
elif K == QQbar or L == QQbar:
804+
elif isinstance(K, sage.rings.abc.AlgebraicField) or isinstance(L, sage.rings.abc.AlgebraicField):
802805
F = QQbar
803806
else:
804807
# TODO -- improve this

src/sage/modular/abvar/finite_subgroup.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
# http://www.gnu.org/licenses/
9898
#*****************************************************************************
9999

100+
from sage.misc.lazy_import import lazy_import
100101
from sage.modular.abvar.torsion_point import TorsionPoint
101102
from sage.modules.module import Module
102103
from sage.modules.free_module import is_FreeModule
@@ -105,12 +106,13 @@
105106
from sage.structure.richcmp import richcmp_method, richcmp
106107
from sage.rings.integer import Integer
107108
from sage.rings.integer_ring import ZZ
108-
from sage.rings.qqbar import QQbar
109109
from sage.rings.rational_field import QQ
110110
from sage.arith.functions import lcm
111111
from sage.misc.misc_c import prod
112112
from sage.structure.element import coercion_model
113113

114+
lazy_import('sage.rings.qqbar', 'QQbar')
115+
114116

115117
@richcmp_method
116118
class FiniteSubgroup(Module):
@@ -521,7 +523,7 @@ def _repr_(self):
521523
'Finite subgroup with invariants [3, 3, 3, 3, 3, 3, 3, 3, 3, 3] over QQ of Abelian variety J0(42) of dimension 5'
522524
"""
523525
K = self.__field_of_definition
524-
if K == QQbar:
526+
if isinstance(K, sage.rings.abc.AlgebraicField):
525527
field = "QQbar"
526528
elif K == QQ:
527529
field = "QQ"
@@ -815,7 +817,7 @@ def invariants(self):
815817

816818

817819
class FiniteSubgroup_lattice(FiniteSubgroup):
818-
def __init__(self, abvar, lattice, field_of_definition=QQbar, check=True):
820+
def __init__(self, abvar, lattice, field_of_definition=None, check=True):
819821
"""
820822
A finite subgroup of a modular abelian variety that is defined by a
821823
given lattice.
@@ -841,6 +843,8 @@ def __init__(self, abvar, lattice, field_of_definition=QQbar, check=True):
841843
sage: G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
842844
Finite subgroup with invariants [15] over QQbar of Abelian variety J0(11) of dimension 1
843845
"""
846+
if field_of_definition is None:
847+
field_of_definition = QQbar
844848
if check:
845849
from .abvar import is_ModularAbelianVariety
846850
if not is_FreeModule(lattice) or lattice.base_ring() != ZZ:

src/sage/modular/arithgroup/all.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
from .congroup_gamma import Gamma_constructor as Gamma, is_Gamma
1010
from .congroup_sl2z import SL2Z, is_SL2Z
1111

12-
from .arithgroup_perm import ArithmeticSubgroup_Permutation
12+
from sage.misc.lazy_import import lazy_import
13+
lazy_import('sage.modular.arithgroup.arithgroup_perm', 'ArithmeticSubgroup_Permutation')
1314

1415
from .congroup import (degeneracy_coset_representatives_gamma0,
1516
degeneracy_coset_representatives_gamma1)

src/sage/modular/btquotients/btquotient.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
from collections import deque
4343

4444
from sage.arith.misc import gcd, xgcd, kronecker_symbol, fundamental_discriminant
45-
from sage.libs.pari.all import pari
4645
from sage.matrix.constructor import Matrix
4746
from sage.matrix.matrix_space import MatrixSpace
4847
from sage.misc.cachefunc import cached_method
@@ -59,16 +58,17 @@
5958
from sage.rings.finite_rings.integer_mod_ring import Zmod
6059
from sage.rings.integer import Integer
6160
from sage.rings.integer_ring import ZZ
62-
from sage.rings.number_field.number_field import NumberField
63-
from sage.rings.padics.factory import Qp, Zp
6461
from sage.rings.padics.precision_error import PrecisionError
6562
from sage.rings.rational_field import QQ
6663
from sage.structure.sage_object import SageObject
6764
from sage.structure.unique_representation import UniqueRepresentation
6865

6966
lazy_import('sage.algebras.quatalg.quaternion_algebra', 'QuaternionAlgebra')
7067
lazy_import('sage.graphs.graph', 'Graph')
68+
lazy_import('sage.libs.pari.all', 'pari')
7169
lazy_import('sage.plot.colors', 'rainbow')
70+
lazy_import('sage.rings.number_field.number_field', 'NumberField')
71+
lazy_import('sage.rings.padics.factory', ['Qp', 'Zp'])
7272

7373

7474
class DoubleCosetReduction(SageObject):

src/sage/modular/btquotients/pautomorphicform.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646

4747
from sage.matrix.constructor import Matrix, zero_matrix
4848
from sage.matrix.matrix_space import MatrixSpace
49+
from sage.misc.lazy_import import lazy_import
4950
from sage.misc.verbose import verbose
5051
from sage.modular.btquotients.btquotient import DoubleCosetReduction
5152
from sage.modular.hecke.all import AmbientHeckeModule, HeckeModuleElement
@@ -56,14 +57,16 @@
5657
from sage.rings.integer import Integer
5758
from sage.rings.integer_ring import ZZ
5859
from sage.rings.laurent_series_ring import LaurentSeriesRing
59-
from sage.rings.padics.factory import Qp
6060
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
6161
from sage.rings.rational_field import QQ
6262
from sage.rings.real_mpfr import RR
6363
from sage.structure.element import ModuleElement
6464
from sage.structure.richcmp import op_EQ, op_NE
6565
from sage.structure.unique_representation import UniqueRepresentation
6666

67+
lazy_import('sage.rings.padics.factory', 'Qp')
68+
69+
6770
# Need this to be pickleable
6871

6972

src/sage/modular/local_comp/local_comp.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
from sage.rings.integer_ring import ZZ
2424
from sage.rings.polynomial.polynomial_ring import polygen
2525
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
26-
from sage.rings.qqbar import QQbar
2726
from sage.misc.abstract_method import abstract_method
2827
from sage.misc.cachefunc import cached_method
28+
from sage.misc.lazy_import import lazy_import
2929
from sage.misc.verbose import verbose
3030
from sage.misc.flatten import flatten
3131
from sage.modular.modform.element import Newform
3232
from sage.structure.sequence import Sequence
3333

34+
lazy_import('sage.rings.qqbar', 'QQbar')
35+
3436
from .type_space import TypeSpace
3537
from .smoothchar import SmoothCharacterGroupQp, SmoothCharacterGroupUnramifiedQuadratic, SmoothCharacterGroupRamifiedQuadratic
3638

src/sage/modular/local_comp/smoothchar.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,24 @@
4949
from sage.categories.rings import Rings
5050
from sage.misc.abstract_method import abstract_method
5151
from sage.misc.cachefunc import cached_method
52+
from sage.misc.lazy_import import lazy_import
5253
from sage.misc.misc_c import prod
5354
from sage.misc.mrange import xmrange
5455
from sage.misc.verbose import verbose
5556
from sage.modular.dirichlet import DirichletGroup
56-
from sage.rings.finite_rings.conway_polynomials import conway_polynomial
5757
from sage.rings.finite_rings.integer_mod_ring import Zmod
5858
from sage.rings.infinity import Infinity
5959
from sage.rings.integer_ring import ZZ
60-
from sage.rings.number_field.number_field import NumberField
6160
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
6261
from sage.rings.rational_field import QQ
6362
from sage.structure.element import MultiplicativeGroupElement, parent
6463
from sage.structure.parent import Parent
6564
from sage.structure.richcmp import richcmp_not_equal, richcmp
6665
from sage.structure.sequence import Sequence
6766

67+
lazy_import('sage.rings.finite_rings.conway_polynomials', 'conway_polynomial')
68+
lazy_import('sage.rings.number_field.number_field', 'NumberField')
69+
6870

6971
class SmoothCharacterGeneric(MultiplicativeGroupElement):
7072
r"""

src/sage/modular/modform/all.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414

1515
from .theta import theta_qexp, theta2_qexp
1616

17-
from .j_invariant import j_invariant_qexp
17+
from sage.misc.lazy_import import lazy_import
1818

19-
from .vm_basis import victor_miller_basis, delta_qexp
19+
lazy_import('sage.modular.modform.j_invariant', 'j_invariant_qexp')
20+
lazy_import('sage.modular.modform.vm_basis', ['victor_miller_basis', 'delta_qexp'])
2021

2122
from .hecke_operator_on_qexp import hecke_operator_on_qexp, hecke_operator_on_basis
2223

src/sage/modular/modform/cuspidal_submodule.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,14 @@
4141
from sage.matrix.constructor import Matrix
4242
from sage.matrix.special import identity_matrix
4343
from sage.misc.cachefunc import cached_method
44+
from sage.misc.lazy_import import lazy_import
4445
from sage.misc.verbose import verbose
4546
from sage.rings.integer import Integer
4647
from sage.rings.rational_field import QQ
4748

49+
lazy_import('sage.modular.modform.vm_basis', 'victor_miller_basis')
50+
4851
from .submodule import ModularFormsSubmodule
49-
from . import vm_basis
5052
from . import weight1
5153

5254
class CuspidalSubmodule(ModularFormsSubmodule):
@@ -316,8 +318,7 @@ def _compute_q_expansion_basis(self, prec=None):
316318
prec = self.prec()
317319
else:
318320
prec = Integer(prec)
319-
return vm_basis.victor_miller_basis(self.weight(), prec,
320-
cusp_only=True, var='q')
321+
return victor_miller_basis(self.weight(), prec, cusp_only=True, var='q')
321322

322323
def _pari_init_(self):
323324
"""

src/sage/modular/modform/eis_series.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414

1515
from sage.arith.functions import lcm
1616
from sage.arith.misc import bernoulli, divisors, is_squarefree
17+
from sage.misc.lazy_import import lazy_import
1718
from sage.misc.timing import cputime
1819
from sage.modular.arithgroup.congroup_gammaH import GammaH_class
1920
from sage.modular.dirichlet import DirichletGroup
2021
from sage.rings.integer import Integer
2122
from sage.rings.integer_ring import ZZ
22-
from sage.rings.number_field.number_field import CyclotomicField
2323
from sage.rings.power_series_ring import PowerSeriesRing
2424
from sage.rings.rational_field import QQ
2525

26-
from .eis_series_cython import eisenstein_series_poly, Ek_ZZ
26+
lazy_import('sage.modular.modform.eis_series_cython', ['eisenstein_series_poly', 'Ek_ZZ'])
27+
lazy_import('sage.rings.number_field.number_field', 'CyclotomicField')
2728

2829

2930
def eisenstein_series_qexp(k, prec=10, K=QQ, var='q', normalization='linear'):

0 commit comments

Comments
 (0)