MCPcopy Index your code
hub / github.com/RustPython/RustPython / BufferedRandom

Class BufferedRandom

Lib/_pyio.py:1393–1464  ·  view source on GitHub ↗

A buffered interface to random access streams. The constructor creates a reader and writer for a seekable stream, raw, given in the first argument. If the buffer_size is omitted it defaults to DEFAULT_BUFFER_SIZE.

Source from the content-addressed store, hash-verified

1391
1392
1393class BufferedRandom(BufferedWriter, BufferedReader):
1394
1395 """A buffered interface to random access streams.
1396
1397 The constructor creates a reader and writer for a seekable stream,
1398 raw, given in the first argument. If the buffer_size is omitted it
1399 defaults to DEFAULT_BUFFER_SIZE.
1400 """
1401
1402 def __init__(self, raw, buffer_size=DEFAULT_BUFFER_SIZE):
1403 raw._checkSeekable()
1404 BufferedReader.__init__(self, raw, buffer_size)
1405 BufferedWriter.__init__(self, raw, buffer_size)
1406
1407 def seek(self, pos, whence=0):
1408 if whence not in valid_seek_flags:
1409 raise ValueError("invalid whence value")
1410 self.flush()
1411 if self._read_buf:
1412 # Undo read ahead.
1413 with self._read_lock:
1414 self.raw.seek(self._read_pos - len(self._read_buf), 1)
1415 # First do the raw seek, then empty the read buffer, so that
1416 # if the raw seek fails, we don't lose buffered data forever.
1417 pos = self.raw.seek(pos, whence)
1418 with self._read_lock:
1419 self._reset_read_buf()
1420 if pos < 0:
1421 raise OSError("seek() returned invalid position")
1422 return pos
1423
1424 def tell(self):
1425 if self._write_buf:
1426 return BufferedWriter.tell(self)
1427 else:
1428 return BufferedReader.tell(self)
1429
1430 def truncate(self, pos=None):
1431 if pos is None:
1432 pos = self.tell()
1433 # Use seek to flush the read buffer.
1434 return BufferedWriter.truncate(self, pos)
1435
1436 def read(self, size=None):
1437 if size is None:
1438 size = -1
1439 self.flush()
1440 return BufferedReader.read(self, size)
1441
1442 def readinto(self, b):
1443 self.flush()
1444 return BufferedReader.readinto(self, b)
1445
1446 def peek(self, size=0):
1447 self.flush()
1448 return BufferedReader.peek(self, size)
1449
1450 def read1(self, size=-1):

Callers 1

openFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected