Skip to content

Commit 1907696

Browse files
author
Matthias Koeppe
committed
sage.rings: Modularization fixes for imports of power series
1 parent b85f760 commit 1907696

File tree

6 files changed

+47
-20
lines changed

6 files changed

+47
-20
lines changed

src/sage/rings/multi_power_series_ring.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,24 +204,29 @@
204204
# http://www.gnu.org/licenses/
205205
#*****************************************************************************
206206

207+
import sage.misc.latex as latex
207208

208-
from sage.rings.ring import CommutativeRing
209-
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
209+
from sage.rings.infinity import infinity
210+
from sage.rings.multi_power_series_ring_element import MPowerSeries
210211
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
212+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
211213
from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing
212214
from sage.rings.polynomial.term_order import TermOrder
213215
from sage.rings.power_series_ring import PowerSeriesRing, PowerSeriesRing_generic, is_PowerSeriesRing
214-
215-
from sage.rings.infinity import infinity
216-
import sage.misc.latex as latex
216+
from sage.rings.ring import CommutativeRing
217217
from sage.structure.nonexact import Nonexact
218218

219-
from sage.rings.multi_power_series_ring_element import MPowerSeries
220219
from sage.categories.commutative_rings import CommutativeRings
221220
_CommutativeRings = CommutativeRings()
221+
222222
from sage.categories.integral_domains import IntegralDomains
223223
_IntegralDomains = IntegralDomains()
224224

225+
try:
226+
from sage.rings.laurent_series_ring import LaurentSeriesRing
227+
except ImportError:
228+
LaurentSeriesRing = ()
229+
225230

226231
def is_MPowerSeriesRing(x):
227232
"""
@@ -731,8 +736,8 @@ def _is_valid_homomorphism_(self, codomain, im_gens, base_map=None):
731736
return False
732737
if all(v == 0 for v in im_gens):
733738
return True
734-
from .laurent_series_ring import is_LaurentSeriesRing
735-
if is_MPowerSeriesRing(codomain) or is_PowerSeriesRing(codomain) or is_LaurentSeriesRing(codomain):
739+
740+
if is_MPowerSeriesRing(codomain) or is_PowerSeriesRing(codomain) or isinstance(codomain, LaurentSeriesRing):
736741
try:
737742
B = all(v.valuation() > 0 or v.is_nilpotent() for v in im_gens)
738743
except NotImplementedError:

src/sage/rings/polynomial/polynomial_element.pyx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5451,6 +5451,8 @@ cdef class Polynomial(CommutativePolynomial):
54515451
if self.degree() <= 1:
54525452
return R.fraction_field()
54535453

5454+
from sage.rings.number_field.number_field import is_NumberField, NumberField
5455+
54545456
if is_IntegerRing(R):
54555457
from sage.rings.number_field.number_field import NumberField
54565458
return NumberField(self, names)

src/sage/rings/polynomial/polynomial_ring.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ def _coerce_map_from_base_ring(self):
703703
To: Univariate Polynomial Ring in x over Rational Field
704704
sage: R.coerce_map_from(GF(7))
705705
"""
706-
from .polynomial_element import PolynomialBaseringInjection
706+
from sage.rings.polynomial.polynomial_element import PolynomialBaseringInjection
707707

708708
return PolynomialBaseringInjection(self.base_ring(), self)
709709

src/sage/rings/power_series_mpoly.pyx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ from sage.rings.polynomial.multi_polynomial_ring_base import is_MPolynomialRing
77
from sage.rings import power_series_poly
88

99

10+
try:
11+
from sage.libs.pari.all import PariError
12+
except ImportError:
13+
PariError = ()
14+
15+
1016
cdef class PowerSeries_mpoly(PowerSeries):
1117

1218
def __init__(self, parent, f=0, prec=infinity, int check=1, is_gen=0):

src/sage/rings/power_series_poly.pyx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ The class ``PowerSeries_poly`` provides additional methods for univariate power
77
from sage.rings.power_series_ring_element cimport PowerSeries
88
from sage.structure.element cimport Element
99
from sage.rings.infinity import infinity
10-
from sage.libs.pari.all import pari_gen, PariError
10+
11+
try:
12+
from sage.libs.pari.all import pari_gen, PariError
13+
except ImportError:
14+
pari_gen = ()
15+
PariError = ()
1116

1217

1318
cdef class PowerSeries_poly(PowerSeries):

src/sage/rings/power_series_ring.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,13 @@
167167

168168
from sage.categories.complete_discrete_valuation import CompleteDiscreteValuationRings
169169

170+
try:
171+
from .laurent_series_ring import LaurentSeriesRing
172+
from .laurent_series_ring_element import LaurentSeries
173+
except ImportError:
174+
LaurentSeriesRing = ()
175+
LaurentSeries = ()
176+
170177

171178
def PowerSeriesRing(base_ring, name=None, arg2=None, names=None,
172179
sparse=False, default_prec=None, order='negdeglex',
@@ -536,11 +543,11 @@ def __init__(self, base_ring, name=None, default_prec=None, sparse=False,
536543
ValueError: default_prec (= -5) must be non-negative
537544
538545
"""
539-
from sage.rings.finite_rings.finite_field_pari_ffelt import (
540-
FiniteField_pari_ffelt,
541-
)
542-
543546
if implementation is None:
547+
try:
548+
from sage.rings.finite_rings.finite_field_pari_ffelt import FiniteField_pari_ffelt
549+
except ImportError:
550+
FiniteField_pari_ffelt = ()
544551
if isinstance(base_ring, FiniteField_pari_ffelt):
545552
implementation = 'pari'
546553
else:
@@ -570,6 +577,7 @@ def __init__(self, base_ring, name=None, default_prec=None, sparse=False,
570577
assert is_MPolynomialRing(self.__mpoly_ring)
571578
self.Element = power_series_mpoly.PowerSeries_mpoly
572579
elif implementation == 'pari':
580+
from .power_series_pari import PowerSeries_pari
573581
self.Element = PowerSeries_pari
574582
else:
575583
raise ValueError('unknown power series implementation: %r' % implementation)
@@ -578,7 +586,7 @@ def __init__(self, base_ring, name=None, default_prec=None, sparse=False,
578586
category=getattr(self, '_default_category',
579587
_CommutativeRings))
580588
Nonexact.__init__(self, default_prec)
581-
if self.Element is PowerSeries_pari:
589+
if implementation == 'pari':
582590
self.__generator = self.element_class(self, R.gen().__pari__())
583591
else:
584592
self.__generator = self.element_class(self, R.gen(), is_gen=True)
@@ -804,7 +812,7 @@ def _element_constructor_(self, f, prec=infinity, check=True):
804812
if prec >= f.prec():
805813
return f
806814
f = f.truncate(prec)
807-
elif isinstance(f, laurent_series_ring_element.LaurentSeries) and f.parent().power_series_ring() is self:
815+
elif isinstance(f, LaurentSeries) and f.parent().power_series_ring() is self:
808816
return self(f.power_series(), prec, check=check)
809817
elif isinstance(f, MagmaElement) and str(f.Type()) == 'RngSerPowElt':
810818
v = sage_eval(f.Eltseq())
@@ -952,9 +960,8 @@ def _is_valid_homomorphism_(self, codomain, im_gens, base_map=None):
952960
return True # this is allowed.
953961
if base_map is None and not codomain.has_coerce_map_from(self.base_ring()):
954962
return False
955-
from .laurent_series_ring import is_LaurentSeriesRing
956963
v = im_gens[0]
957-
if is_PowerSeriesRing(codomain) or is_LaurentSeriesRing(codomain):
964+
if is_PowerSeriesRing(codomain) or isinstance(codomain, LaurentSeriesRing):
958965
try:
959966
return v.valuation() > 0 or v.is_nilpotent()
960967
except NotImplementedError:
@@ -1269,8 +1276,10 @@ def laurent_series_ring(self):
12691276
try:
12701277
return self.__laurent_series_ring
12711278
except AttributeError:
1272-
self.__laurent_series_ring = laurent_series_ring.LaurentSeriesRing(
1273-
self.base_ring(), self.variable_name(), default_prec=self.default_prec(), sparse=self.is_sparse())
1279+
from .laurent_series_ring import LaurentSeriesRing
1280+
1281+
self.__laurent_series_ring = LaurentSeriesRing(
1282+
self.base_ring(), self.variable_name(), default_prec=self.default_prec(), sparse=self.is_sparse())
12741283
return self.__laurent_series_ring
12751284

12761285

0 commit comments

Comments
 (0)