@@ -198,6 +198,15 @@ except ImportError:
198
198
pari_gen = ()
199
199
200
200
201
+ set_integer_from_gen = None
202
+ pari_divisors_small = None
203
+ n_factor_to_list = None
204
+ pari_is_prime_power = None
205
+ pari_is_prime = None
206
+ objtogen = None
207
+ new_gen_from_integer = None
208
+
209
+
201
210
cdef extern from * :
202
211
int unlikely(int ) nogil # Defined by Cython
203
212
@@ -637,7 +646,9 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
637
646
raise TypeError (" Cannot convert non-integral float to integer" )
638
647
639
648
elif isinstance (x, pari_gen):
640
- from sage.libs.pari.convert_sage import set_integer_from_gen
649
+ global set_integer_from_gen
650
+ if set_integer_from_gen is None :
651
+ from sage.libs.pari.convert_sage import set_integer_from_gen
641
652
set_integer_from_gen(self , x)
642
653
643
654
else :
@@ -3046,12 +3057,14 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
3046
3057
raise ValueError (" n must be nonzero" )
3047
3058
3048
3059
if (method is None or method == ' pari' ) and mpz_fits_slong_p(self .value):
3049
- try :
3050
- from sage.libs.pari.convert_sage import pari_divisors_small
3051
- except ImportError :
3052
- if method == ' pari' :
3053
- raise ImportError (" method `pari` requested, but cypari2 not present" )
3054
- else :
3060
+ global pari_divisors_small
3061
+ if pari_divisors_small is None :
3062
+ try :
3063
+ from sage.libs.pari.convert_sage import pari_divisors_small
3064
+ except ImportError :
3065
+ if method == ' pari' :
3066
+ raise ImportError (" method `pari` requested, but cypari2 not present" )
3067
+ if pari_divisors_small is not None :
3055
3068
if mpz_sgn(self .value) > 0 :
3056
3069
return pari_divisors_small(self )
3057
3070
else :
@@ -3909,11 +3922,13 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
3909
3922
return factor_trial_division(self , limit)
3910
3923
3911
3924
if mpz_fits_slong_p(n.value):
3912
- try :
3913
- from sage.libs.flint.ulong_extras import n_factor_to_list
3914
- except ImportError :
3915
- pass
3916
- else :
3925
+ global n_factor_to_list
3926
+ if n_factor_to_list is None :
3927
+ try :
3928
+ from sage.libs.flint.ulong_extras import n_factor_to_list
3929
+ except ImportError :
3930
+ pass
3931
+ if n_factor_to_list is not None :
3917
3932
if proof is None :
3918
3933
from sage.structure.proof.proof import get_flag
3919
3934
proof = get_flag(proof, " arithmetic" )
@@ -5108,11 +5123,13 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
5108
5123
return (self , zero) if get_data else False
5109
5124
5110
5125
if mpz_fits_slong_p(self .value):
5111
- try :
5112
- from sage.libs.pari.convert_sage import pari_is_prime_power
5113
- except ImportError :
5114
- pass
5115
- else :
5126
+ global pari_is_prime_power
5127
+ if pari_is_prime_power is None :
5128
+ try :
5129
+ from sage.libs.pari.convert_sage import pari_is_prime_power
5130
+ except ImportError :
5131
+ pass
5132
+ if pari_is_prime_power is not None :
5116
5133
return pari_is_prime_power(self , get_data)
5117
5134
5118
5135
cdef long n
@@ -5194,11 +5211,13 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
5194
5211
return False
5195
5212
5196
5213
if mpz_fits_ulong_p(self .value):
5197
- try :
5198
- from sage.libs.pari.convert_sage import pari_is_prime
5199
- except ImportError :
5200
- pass
5201
- else :
5214
+ global pari_is_prime
5215
+ if pari_is_prime is None :
5216
+ try :
5217
+ from sage.libs.pari.convert_sage import pari_is_prime
5218
+ except ImportError :
5219
+ pass
5220
+ if pari_is_prime is not None :
5202
5221
return pari_is_prime(self )
5203
5222
5204
5223
if proof is None :
@@ -5550,7 +5569,9 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
5550
5569
5551
5570
5552
5571
"""
5553
- from cypari2.gen import objtogen
5572
+ global objtogen
5573
+ if objtogen is None :
5574
+ from cypari2.gen import objtogen
5554
5575
if self .is_square():
5555
5576
raise ValueError (" class_number not defined for square integers" )
5556
5577
if not self % 4 in [0 ,1 ]:
@@ -5958,7 +5979,9 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
5958
5979
1041334
5959
5980
5960
5981
"""
5961
- from sage.libs.pari.convert_sage import new_gen_from_integer
5982
+ global new_gen_from_integer
5983
+ if new_gen_from_integer is None :
5984
+ from sage.libs.pari.convert_sage import new_gen_from_integer
5962
5985
return new_gen_from_integer(self )
5963
5986
5964
5987
def _interface_init_ (self , I = None ):
0 commit comments