Skip to content

Commit 6042ff7

Browse files
author
Matthias Koeppe
committed
sage.rings.{finite_rings,polynomial}: Modularization fixes for imports
1 parent e78d4ea commit 6042ff7

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

src/sage/rings/finite_rings/conway_polynomials.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ def exists_conway_polynomial(p, n):
9494
sage: exists_conway_polynomial(6,6)
9595
False
9696
"""
97-
return ConwayPolynomials().has_polynomial(p,n)
97+
try:
98+
return ConwayPolynomials().has_polynomial(p,n)
99+
except ImportError:
100+
return False
98101

99102
class PseudoConwayLattice(WithEqualityById, SageObject):
100103
r"""
@@ -174,9 +177,13 @@ def __init__(self, p, use_database=True):
174177
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
175178
self.ring = PolynomialRing(FiniteField(p), 'x')
176179
if use_database:
177-
C = ConwayPolynomials()
178-
self.nodes = {n: self.ring(C.polynomial(p, n))
179-
for n in C.degrees(p)}
180+
try:
181+
C = ConwayPolynomials()
182+
except ImportError:
183+
self.nodes = {}
184+
else:
185+
self.nodes = {n: self.ring(C.polynomial(p, n))
186+
for n in C.degrees(p)}
180187
else:
181188
self.nodes = {}
182189

src/sage/rings/finite_rings/element_pari_ffelt.pyx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@ from .element_base cimport FinitePolyExtElement
2828
from .integer_mod import IntegerMod_abstract
2929

3030
import sage.rings.integer
31-
from sage.modules.free_module_element import FreeModuleElement
3231
from sage.rings.integer cimport Integer
3332
from sage.rings.polynomial.polynomial_element import Polynomial
3433
from sage.rings.polynomial.multi_polynomial_element import MPolynomial
3534
from sage.rings.rational import Rational
3635
from sage.structure.richcmp cimport rich_to_bool
3736

37+
try:
38+
from sage.modules.free_module_element import FreeModuleElement
39+
except ImportError:
40+
FreeModuleElement = ()
3841

3942
from sage.interfaces.abc import GapElement
4043

src/sage/rings/finite_rings/finite_field_constructor.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@
189189
except ImportError:
190190
FiniteField_givaro = None
191191

192+
try:
193+
from .finite_field_ntl_gf2e import FiniteField_ntl_gf2e
194+
except ImportError:
195+
FiniteField_ntl_gf2e = None
196+
197+
192198
from sage.structure.factory import UniqueFactory
193199

194200

@@ -619,9 +625,9 @@ def create_key_and_extra_args(self, order, name=None, modulus=None, names=None,
619625
name = normalize_names(1, name)
620626

621627
if impl is None:
622-
if order < zech_log_bound:
628+
if order < zech_log_bound and FiniteField_givaro is not None:
623629
impl = 'givaro'
624-
elif p == 2:
630+
elif p == 2 and FiniteField_ntl_gf2e is not None:
625631
impl = 'ntl'
626632
else:
627633
impl = 'pari_ffelt'
@@ -772,7 +778,6 @@ def create_object(self, version, key, **kwds):
772778
if impl == 'givaro':
773779
K = FiniteField_givaro(order, name, modulus, repr, elem_cache)
774780
elif impl == 'ntl':
775-
from .finite_field_ntl_gf2e import FiniteField_ntl_gf2e
776781
K = FiniteField_ntl_gf2e(order, name, modulus)
777782
elif impl == 'pari_ffelt' or impl == 'pari':
778783
from .finite_field_pari_ffelt import FiniteField_pari_ffelt

0 commit comments

Comments
 (0)