@@ -215,6 +215,7 @@ async def fetch_big_maps_by_level(self) -> AsyncGenerator[Tuple[int, Tuple[BigMa
215215 offset = 0
216216 big_maps : Tuple [BigMapData , ...] = tuple ()
217217
218+ # TODO: Share code between this and OperationFetcher
218219 while True :
219220 fetched_big_maps = await self ._datasource .get_big_maps (
220221 self ._big_map_addresses ,
@@ -226,10 +227,14 @@ async def fetch_big_maps_by_level(self) -> AsyncGenerator[Tuple[int, Tuple[BigMa
226227 )
227228 big_maps = big_maps + fetched_big_maps
228229
230+ # NOTE: Yield big map slices by level except the last one
229231 while True :
230232 for i in range (len (big_maps ) - 1 ):
231- if big_maps [i ].level != big_maps [i + 1 ].level :
232- yield big_maps [i ].level , tuple (big_maps [: i + 1 ])
233+ curr_level , next_level = big_maps [i ].level , big_maps [i + 1 ].level
234+
235+ # NOTE: Level boundaries found. Exit for loop, stay in while.
236+ if curr_level != next_level :
237+ yield curr_level , big_maps [: i + 1 ]
233238 big_maps = big_maps [i + 1 :]
234239 break
235240 else :
@@ -241,7 +246,7 @@ async def fetch_big_maps_by_level(self) -> AsyncGenerator[Tuple[int, Tuple[BigMa
241246 offset += self ._datasource .request_limit
242247
243248 if big_maps :
244- yield big_maps [0 ].level , tuple ( big_maps [: i + 2 ])
249+ yield big_maps [0 ].level , big_maps
245250
246251
247252class TzktDatasource (IndexDatasource ):
0 commit comments