2525    sage: w[10000000]                                                                   # needs sage.modules 
2626    'b' 
2727""" 
28+ from  typing  import  Iterator 
29+ from  itertools  import  chain 
2830
2931from  sage .combinat .words .word_infinite_datatypes  import  WordDatatype_callable 
3032from  sage .misc .lazy_import  import  lazy_import 
@@ -38,7 +40,8 @@ class WordDatatype_morphic(WordDatatype_callable):
3840    Datatype for a morphic word defined by a morphism, a starting letter 
3941    and a coding. 
4042    """ 
41-     def  __init__ (self , parent , morphism , letter , coding = None , length = Infinity ):
43+     def  __init__ (self , parent , morphism , letter ,
44+                  coding = None , length = Infinity ) ->  None :
4245        r""" 
4346        INPUT: 
4447
@@ -127,7 +130,7 @@ def __init__(self, parent, morphism, letter, coding=None, length=Infinity):
127130        else :
128131            self ._coding  =  coding 
129132
130-     def  __reduce__ (self ):
133+     def  __reduce__ (self )  ->   tuple :
131134        r""" 
132135        EXAMPLES:: 
133136
@@ -156,7 +159,7 @@ def __reduce__(self):
156159        return  self .__class__ , (self ._parent , self ._morphism , self ._letter ,
157160                                self ._coding , self ._len )
158161
159-     def  representation (self , n ):
162+     def  representation (self , n )  ->   list :
160163        r""" 
161164        Return the representation of the integer n in the numeration system 
162165        associated to the morphism. 
@@ -201,16 +204,16 @@ def representation(self, n):
201204            sage: w.representation(5)                                                   # needs sage.modules 
202205            [1, 0, 0, 0] 
203206        """ 
204-         letters_to_int  =  {a :i  for  ( i , a )  in  enumerate (self ._alphabet )}
207+         letters_to_int  =  {a :  i  for  i ,  a  in  enumerate (self ._alphabet )}
205208        position  =  letters_to_int [self ._letter ]
206209        M  =  self ._morphism .incidence_matrix ()
207-         vMk  =  vector ([1 ]* len (self ._alphabet ))
210+         vMk  =  vector ([1 ]  *   len (self ._alphabet ))
208211        length_of_images  =  []
209212        while  vMk [position ] <=  n :
210213            length_of_images .append (vMk )
211-             vMk_next  =  vMk * M 
214+             vMk_next  =  vMk   *   M 
212215            if  vMk [position ] ==  vMk_next [position ]:
213-                 raise  IndexError ('index (={}) out of range, the fixed point is finite and has length {}'  . format ( n , vMk [position ]) )
216+                 raise  IndexError (f 'index (={ n }  ) out of range, the fixed point is finite and has length { vMk [position ]} '  )
214217            vMk  =  vMk_next 
215218        k  =  len (length_of_images )
216219        letter_k  =  self ._letter 
@@ -223,10 +226,10 @@ def representation(self, n):
223226            while  S  <=  n_k :
224227                a  =  m_letter_k [j ]
225228                i  =  letters_to_int [a ]
226-                 pile_length  =  length_of_images [k - 1 ][i ]
229+                 pile_length  =  length_of_images [k   -   1 ][i ]
227230                S  +=  pile_length 
228231                j  +=  1 
229-             path .append (j - 1 )
232+             path .append (j   -   1 )
230233            n_k  -=  S  -  pile_length 
231234            letter_k  =  a 
232235            k  -=  1 
@@ -269,11 +272,9 @@ def _func(self, key):
269272        letter  =  self ._letter 
270273        for  a  in  self .representation (key ):
271274            letter  =  (self ._morphism (letter ))[a ]
272-         if  key  ==  0 :
273-             return  self ._coding [letter ]
274275        return  self ._coding [letter ]
275276
276-     def  __iter__ (self ):
277+     def  __iter__ (self )  ->   Iterator :
277278        r""" 
278279        Return an iterator of the letters of the fixed point of ``self`` 
279280        starting with ``letter``. 
@@ -338,7 +339,6 @@ def __iter__(self):
338339            sage: (s^7).reversal().fixed_points() 
339340            [] 
340341        """ 
341-         from  itertools  import  chain 
342342        w  =  iter (self ._morphism .image (self ._letter ))
343343        while  True :
344344            try :
0 commit comments