Skip to main content

Download metadata from conda packages without transferring entire file.

Project description

conda-package-streaming

Download conda metadata from packages without transferring entire file. Get metadata from local .tar.bz2 packages without reading entire files.

Uses enhanced pip lazy_wheel to fetch a file out of .conda with no more than 3 range requests, but usually 2.

Uses tar = tarfile.open(fileobj=...) to stream remote .tar.bz2. Closes the HTTP request once desired files have been seen.

Quickstart

The basic API yields (tarfile, member) tuples from conda files as tarfile is needed to extract member. Note the .tar.bz2 format yields all members, not just info/, from stream_conda_info / stream_conda_component, while the .conda format yields members from the requested inner archive — allowing the caller to decide when to stop reading.

From a url,

from conda_package_streaming.url import stream_conda_info
# url = (ends with .conda or .tar.bz2)
for tar, member in stream_conda_info(url):
    if member.name == "info/index.json":
        index_json = json.load(tar.extractfile(member))
        break

From s3,

client = boto3.client("s3")
from conda_package_streaming.s3 import stream_conda_info
# key = (ends with .conda or .tar.bz2)
for tar, member in stream_conda_info(client, bucket, key):
    if member.name == "info/index.json":
        index_json = json.load(tar.extractfile(member))
        break

From a filename,

from conda_package_streaming import package_streaming
# filename = (ends with .conda or .tar.bz2)
for tar, member in package_streaming.stream_conda_info(filename):
    if member.name == "info/index.json":
        index_json = json.load(tar.extractfile(member))
        break

From a file-like object,

from contextlib import closing

from conda_package_streaming.url import conda_reader_for_url
from conda_package_streaming.package_streaming import stream_conda_component
filename, conda = conda_reader_for_url(url)

# file object must be seekable for `.conda` format, but merely readable for `.tar.bz2`
with closing(conda):
    for tar, member in stream_conda_component(filename, conda, component="info"):
        if member.name == "info/index.json":
            index_json = json.load(tar.extractfile(member))
            break

Package goals

  • Extract conda packages (both formats)

  • Easy to install from pypi or conda

  • Do the least amount of I/O possible (no temporary files, transfer partial packages)

  • Open files from the network / standard HTTP / s3

  • Continue using conda-package-handling to create .conda packages

Generating documentation

Uses markdown, furo theme. Requires newer mdit-py-plugins.

pip install conda-package-streaming[docs]

One time: sphinx-apidoc -o docs .

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

conda_package_streaming-0.6.0.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

conda_package_streaming-0.6.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file conda_package_streaming-0.6.0.tar.gz.

File metadata

File hashes

Hashes for conda_package_streaming-0.6.0.tar.gz
Algorithm Hash digest
SHA256 a89048ae32b71cd04c3768bdb2f96d4f96a72e7458918c93eaab74f2b7e48984
MD5 3c76a14ab1f5edc53bcd78f7678404a8
BLAKE2b-256 c4f3291b12d407c517d63fc0159ce4dace4c8cd9461b5562f66ac192f0123679

See more details on using hashes here.

File details

Details for the file conda_package_streaming-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for conda_package_streaming-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bad9e56b7033707d3201e1bc87cc2b3acb9f8801f4c4e7dd3b723c8b26eaa84d
MD5 0dcc63b82a80ea1df2558c8e329cd72a
BLAKE2b-256 d46bbb4c39575420dcdbdd8f58f1ad4335446d2a74f1a2f428b7bc75db1ab6c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page