跳转到主要内容

一个高效的库,用于从新的和旧的格式 .conda 和 .tar.bz2 conda 包中读取。

项目描述

conda-package-streaming

pre-commit.ci status

一个高效的库,用于从新的和旧的格式 .conda 和 .tar.bz2 conda 包中读取。

从不需要传输整个文件的包中下载conda元数据。从本地 .tar.bz2 包中获取元数据,无需读取整个文件。

使用增强的pip lazy_wheel.conda文件中获取文件,最多3次范围请求,但通常2次。

使用tar = tarfile.open(fileobj=...)流式传输远程.tar.bz2。一旦看到所需的文件,就关闭HTTP请求。

快速入门

基本API从conda文件中生成(tarfile, member)元组,因为tarfile是提取成员所必需的。请注意,.tar.bz2格式从stream_conda_info / stream_conda_component生成所有成员,而不仅仅是info/,而.conda格式生成请求内部存档的成员——允许调用者决定何时停止读取。

从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

从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 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

从文件-like对象,

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

如果您需要整个包,请先下载,然后使用基于文件的API。如果您只需要访问包元数据,基于URL的API更有效。

包目标

  • 提取conda包(两种格式)

  • 易于从pypi或conda安装

  • 尽可能少地进行I/O操作(无临时文件,传输部分包)

  • 从网络/标准HTTP/s3打开文件

  • 继续使用conda-package-handling创建.conda包

生成文档

使用markdown,furo主题。需要较新的mdit-py-plugins。

pip安装conda-package-streaming[docs]

单次执行:sphinx-apidoc -o docs .

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

conda_package_streaming-0.10.0.tar.gz (13.5 kB 查看哈希)

上传时间:

构建分发

conda_package_streaming-0.10.0-py3-none-any.whl (15.7 kB 查看哈希)

上传时间: Python 3

由以下组织支持