@@ -378,25 +378,23 @@ def get_blkno_indexers(int64_t[:] blknos, bint group=True):
378
378
379
379
object blkno
380
380
object group_dict = defaultdict(list )
381
- int64_t[:] res_view
382
381
383
382
n = blknos.shape[0 ]
384
-
385
- if n == 0 :
386
- return
387
-
383
+ result = list ()
388
384
start = 0
389
385
cur_blkno = blknos[start]
390
386
391
- if group is False :
387
+ if n == 0 :
388
+ pass
389
+ elif group is False :
392
390
for i in range (1 , n):
393
391
if blknos[i] != cur_blkno:
394
- yield cur_blkno, slice (start, i)
392
+ result.append(( cur_blkno, slice (start, i)) )
395
393
396
394
start = i
397
395
cur_blkno = blknos[i]
398
396
399
- yield cur_blkno, slice (start, n)
397
+ result.append(( cur_blkno, slice (start, n)) )
400
398
else :
401
399
for i in range (1 , n):
402
400
if blknos[i] != cur_blkno:
@@ -409,19 +407,20 @@ def get_blkno_indexers(int64_t[:] blknos, bint group=True):
409
407
410
408
for blkno, slices in group_dict.items():
411
409
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 ])) )
413
411
else :
414
412
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)
417
414
418
415
i = 0
419
416
for start, stop in slices:
420
417
for diff in range (start, stop):
421
- res_view [i] = diff
418
+ arr [i] = diff
422
419
i += 1
423
420
424
- yield blkno, result
421
+ result.append((blkno, arr))
422
+
423
+ return result
425
424
426
425
427
426
def get_blkno_placements (blknos , group: bool = True ):
0 commit comments