@@ -3449,71 +3449,26 @@ def test_too_short(self):
3449
3449
3450
3450
class StoreSeekReadTest (unittest .TestCase ):
3451
3451
def test_store_seek_read (self ):
3452
- class StatIO (io .RawIOBase ):
3453
- def __init__ (self , buf : bytes ):
3452
+ from _pyio import BytesIO
3453
+ class StatIO (BytesIO ):
3454
+ def __init__ (self ):
3455
+ super ().__init__ ()
3454
3456
self .bytes_read = 0
3455
- self .buffer = buf
3456
- self .pos = 0
3457
- self .eof = False
3458
-
3459
- def readinto (self , buffer , / ):
3460
- if self .eof :
3461
- return 0
3462
- sz = min (len (buffer ), len (self .buffer ) - self .pos )
3463
- buffer [:sz ] = self .buffer [self .pos :self .pos + sz ]
3464
- self .pos += sz
3465
- self .bytes_read += sz
3466
- self .eof = self .pos == len (self .buffer )
3467
- return sz
3468
-
3469
- def readall (self ):
3470
- if self .eof :
3471
- return b''
3472
- self .eof = True
3473
- self .bytes_read += len (self .buffer ) - self .pos
3474
- ret = self .buffer [self .pos :]
3475
- self .pos = len (self .buffer )
3476
- return ret
3477
-
3478
- def seek (self , offset , whence = os .SEEK_SET , / ):
3479
- if whence == os .SEEK_CUR :
3480
- new_pos = self .pos + offset
3481
- elif whence == os .SEEK_SET :
3482
- new_pos = offset
3483
- elif whence == os .SEEK_END :
3484
- new_pos = len (self .buffer ) + offset
3485
- else :
3486
- raise ValueError ("unsupported whence" )
3487
-
3488
- if new_pos < 0 :
3489
- new_pos = 0
3490
- elif new_pos > len (self .buffer ):
3491
- new_pos = len (self .buffer )
3492
-
3493
- self .eof = new_pos == len (self .buffer )
3494
- self .pos = new_pos
3495
- return new_pos
3496
-
3497
- def tell (self ):
3498
- return self .pos
3499
-
3500
- def readable (self ):
3501
- return True
3502
-
3503
- def writable (self ):
3504
- return False
3505
3457
3506
- def seekable (self ):
3507
- return True
3458
+ def read (self , size = - 1 ):
3459
+ bs = super ().read (size )
3460
+ self .bytes_read += len (bs )
3461
+ print ('read sz' , len (bs ))
3462
+ return bs
3508
3463
3509
3464
def get_bytes_read (self ):
3510
3465
return self .bytes_read
3511
3466
3512
- bio = io . BytesIO ()
3467
+ sio = StatIO ()
3513
3468
txt = b'0123456789' * 10000
3514
3469
3515
3470
# Check seek on a file
3516
- with zipfile .ZipFile (bio , "w" ) as zipf :
3471
+ with zipfile .ZipFile (sio , "w" ) as zipf :
3517
3472
zipf .writestr ("foo.txt" , txt ) # 100000 bytes
3518
3473
3519
3474
sio = StatIO (bio .getvalue ())
0 commit comments