Read exactly *n* bytes from `fp` This method is required because fp may be unbuffered, i.e. return short reads.
(fp, n)
| 471 | super().__del__() |
| 472 | |
| 473 | def _read_exact(fp, n): |
| 474 | '''Read exactly *n* bytes from `fp` |
| 475 | |
| 476 | This method is required because fp may be unbuffered, |
| 477 | i.e. return short reads. |
| 478 | ''' |
| 479 | data = fp.read(n) |
| 480 | while len(data) < n: |
| 481 | b = fp.read(n - len(data)) |
| 482 | if not b: |
| 483 | raise EOFError("Compressed file ended before the " |
| 484 | "end-of-stream marker was reached") |
| 485 | data += b |
| 486 | return data |
| 487 | |
| 488 | |
| 489 | def _read_gzip_header(fp): |
no test coverage detected