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

Class _Unframer

Lib/pickle.py:260–326  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258
259
260class _Unframer:
261
262 def __init__(self, file_read, file_readline, file_tell=None):
263 self.file_read = file_read
264 self.file_readline = file_readline
265 self.current_frame = None
266
267 def readinto(self, buf):
268 if self.current_frame:
269 n = self.current_frame.readinto(buf)
270 if n == 0 and len(buf) != 0:
271 self.current_frame = None
272 n = len(buf)
273 buf[:] = self.file_read(n)
274 return n
275 if n < len(buf):
276 raise UnpicklingError(
277 "pickle exhausted before end of frame")
278 return n
279 else:
280 n = len(buf)
281 buf[:] = self.file_read(n)
282 return n
283
284 def read(self, n):
285 if self.current_frame:
286 data = self.current_frame.read(n)
287 if not data and n != 0:
288 self.current_frame = None
289 return self.file_read(n)
290 if len(data) < n:
291 raise UnpicklingError(
292 "pickle exhausted before end of frame")
293 return data
294 else:
295 return self._chunked_file_read(n)
296
297 def readline(self):
298 if self.current_frame:
299 data = self.current_frame.readline()
300 if not data:
301 self.current_frame = None
302 return self.file_readline()
303 if data[-1] != b'\n'[0]:
304 raise UnpicklingError(
305 "pickle exhausted before end of frame")
306 return data
307 else:
308 return self.file_readline()
309
310 def _chunked_file_read(self, size):
311 cursize = min(size, _MIN_READ_BUF_SIZE)
312 b = self.file_read(cursize)
313 while cursize < size and len(b) == cursize:
314 delta = min(cursize, size - cursize)
315 b += self.file_read(delta)
316 cursize += delta
317 return b

Callers 1

loadMethod · 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…