MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _PaddedFile

Class _PaddedFile

tools/python-3.11.9-amd64/Lib/gzip.py:75–114  ·  view source on GitHub ↗

Minimal read-only file object that prepends a string to the contents of an actual file. Shouldn't be used outside of gzip.py, as it lacks essential functionality.

Source from the content-addressed store, hash-verified

73 output.write(struct.pack("<L", value))
74
75class _PaddedFile:
76 """Minimal read-only file object that prepends a string to the contents
77 of an actual file. Shouldn&#x27;t be used outside of gzip.py, as it lacks
78 essential functionality."""
79
80 def __init__(self, f, prepend=b''):
81 self._buffer = prepend
82 self._length = len(prepend)
83 self.file = f
84 self._read = 0
85
86 def read(self, size):
87 if self._read is None:
88 return self.file.read(size)
89 if self._read + size <= self._length:
90 read = self._read
91 self._read += size
92 return self._buffer[read:self._read]
93 else:
94 read = self._read
95 self._read = None
96 return self._buffer[read:] + \
97 self.file.read(size-self._length+read)
98
99 def prepend(self, prepend=b''):
100 if self._read is None:
101 self._buffer = prepend
102 else: # Assume data was read since the last prepend() call
103 self._read -= len(prepend)
104 return
105 self._length = len(self._buffer)
106 self._read = 0
107
108 def seek(self, off):
109 self._read = None
110 self._buffer = None
111 return self.file.seek(off)
112
113 def seekable(self):
114 return True # Allows fast-forwarding even in unseekable streams
115
116
117class BadGzipFile(OSError):

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected