167167
168168from 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
171178def 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