MCPcopy Index your code
hub / github.com/python/cpython / BufferedRandom

Class BufferedRandom

Lib/_pyio.py:1412–1483  ·  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

1410
1411
1412class BufferedRandom(BufferedWriter, BufferedReader):
1413
1414 """A buffered interface to random access streams.
1415
1416 The constructor creates a reader and writer for a seekable stream,
1417 raw, given in the first argument. If the buffer_size is omitted it
1418 defaults to DEFAULT_BUFFER_SIZE.
1419 """
1420
1421 def __init__(self, raw, buffer_size=DEFAULT_BUFFER_SIZE):
1422 raw._checkSeekable()
1423 BufferedReader.__init__(self, raw, buffer_size)
1424 BufferedWriter.__init__(self, raw, buffer_size)
1425
1426 def seek(self, pos, whence=0):
1427 if whence not in valid_seek_flags:
1428 raise ValueError("invalid whence value")
1429 self.flush()
1430 if self._read_buf:
1431 # Undo read ahead.
1432 with self._read_lock:
1433 self.raw.seek(self._read_pos - len(self._read_buf), 1)
1434 # First do the raw seek, then empty the read buffer, so that
1435 # if the raw seek fails, we don't lose buffered data forever.
1436 pos = self.raw.seek(pos, whence)
1437 with self._read_lock:
1438 self._reset_read_buf()
1439 if pos < 0:
1440 raise OSError("seek() returned invalid position")
1441 return pos
1442
1443 def tell(self):
1444 if self._write_buf:
1445 return BufferedWriter.tell(self)
1446 else:
1447 return BufferedReader.tell(self)
1448
1449 def truncate(self, pos=None):
1450 if pos is None:
1451 pos = self.tell()
1452 # Use seek to flush the read buffer.
1453 return BufferedWriter.truncate(self, pos)
1454
1455 def read(self, size=None):
1456 if size is None:
1457 size = -1
1458 self.flush()
1459 return BufferedReader.read(self, size)
1460
1461 def readinto(self, b):
1462 self.flush()
1463 return BufferedReader.readinto(self, b)
1464
1465 def peek(self, size=0):
1466 self.flush()
1467 return BufferedReader.peek(self, size)
1468
1469 def read1(self, size=-1):

Callers 1

openFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…