@@ -378,25 +378,23 @@ def get_blkno_indexers(int64_t[:] blknos, bint group=True):
378378
379379 object blkno
380380 object group_dict = defaultdict(list )
381- int64_t[:] res_view
382381
383382 n = blknos.shape[0 ]
384-
385- if n == 0 :
386- return
387-
383+ result = list ()
388384 start = 0
389385 cur_blkno = blknos[start]
390386
391- if group is False :
387+ if n == 0 :
388+ pass
389+ elif group is False :
392390 for i in range (1 , n):
393391 if blknos[i] != cur_blkno:
394- yield cur_blkno, slice (start, i)
392+ result.append(( cur_blkno, slice (start, i)) )
395393
396394 start = i
397395 cur_blkno = blknos[i]
398396
399- yield cur_blkno, slice (start, n)
397+ result.append(( cur_blkno, slice (start, n)) )
400398 else :
401399 for i in range (1 , n):
402400 if blknos[i] != cur_blkno:
@@ -409,19 +407,20 @@ def get_blkno_indexers(int64_t[:] blknos, bint group=True):
409407
410408 for blkno, slices in group_dict.items():
411409 if len (slices) == 1 :
412- yield blkno, slice (slices[0 ][0 ], slices[0 ][1 ])
410+ result.append(( blkno, slice (slices[0 ][0 ], slices[0 ][1 ])) )
413411 else :
414412 tot_len = sum (stop - start for start, stop in slices)
415- result = np.empty(tot_len, dtype = np.int64)
416- res_view = result
413+ arr = np.empty(tot_len, dtype = np.int64)
417414
418415 i = 0
419416 for start, stop in slices:
420417 for diff in range (start, stop):
421- res_view [i] = diff
418+ arr [i] = diff
422419 i += 1
423420
424- yield blkno, result
421+ result.append((blkno, arr))
422+
423+ return result
425424
426425
427426def get_blkno_placements (blknos , group: bool = True ):
0 commit comments