A lazy-loading, seekable, remote file object using http range requests
Project description
seekablehttpfile
This project provides a file-like object that fetches parts of a file using HTTP range requests as needed.
>>> from seekablehttpfile import SeekableHttpFile
>>> from zipfile import ZipFile
>>> f = SeekableHttpFile("https://files.pythonhosted.org/packages/cb/90/599c79a248dcae6935331113649de5d75427e320efde21b583648b498584/tensorflow_intel-2.14.0-cp310-cp310-win_amd64.whl") # 284MB
>>> # use as normal, for example with ZipFile
>>> z = ZipFile(f)
>>> len(z.namelist())
9414
>>> # find out how much we actually read
>>> f.stats
{'num_requests': 4, 'optimistic_bytes_read': 256000, 'lazy_bytes_read': 1078669, 'satisfied_from_cache': 2}
Version Compatibility
Users of this library should be able to use Python 3.7 or above. This is
validated by tests, and is the version encoded in Requires-Python
.
Development requires Python 3.12 (or 3.13), realistically. CI validates that it works on 3.10 and above, but you will get less checking in flake8. Expect older versions to be dropped as soon as there is a version of mypy, black, etc that is not simultaneously compatible with all development versions.
Notably, this means that while this project might function (and pass tests) on Python 3.7, it's likely that you can't typecheck against it.
License
seekablehttpfile is copyright Tim Hatch, and licensed under
the MIT license. I am providing code in this repository to you under an open
source license. This is my personal repository; the license you receive to
my code is from me and not from my employer. See the LICENSE
file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for seekablehttpfile-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4225719c04e4fd509d2611dad0800b42dee13dc1c844a37dc2a055f4fec3ffbf |
|
MD5 | aa20e62409bff828608314871d41b236 |
|
BLAKE2b-256 | 0e4ae9884a2ba7892f64b5768e552fcc31f140fdfa2bd63f9a044f26b5514a57 |