Datasets

Stars

Hugging Face 的数据集加载、处理与共享基础库,统一访问本地文件、Hub 数据和远程对象存储,并通过 Apache Arrow、流式读取与 fsspec 协议链支撑文本、图像、音频等机器学习数据工作流。

Machine Learning DatasetsApache Arrow · StreamingPython · fsspec
DATA ACCESS · CHAINED FSSPEC URLS

路径经过几跳,配置就必须保留几跳

`zip::https` 不只是一个字符串:每一段协议都有自己的读取参数。返回完整路径时,也必须返回与它一一对应的累计配置。

CHAINED URL · TWO HOPSzip://data.jsonl"::"https://domain.org/archive.zip
ZIPmode = r
HTTPSblock_size = omit
BEFORE · LOOP-LOCAL RETURNreturn urlpath, storage_options
ZIPDROPPED
HTTPSKEPT

完整路径 · 不完整配置

AFTER · ACCUMULATED RETURNreturn urlpath, prepared_storage_options
zipmode: rhttpsblock_size: omittrust_env: true
2 HOPS · 2 CONFIGS ✓

路径链与配置链重新对齐

配置丢失

双跳路径最终只剩最后一跳参数

`_prepare_path_and_storage_options()` 会拆解 `zip://data.jsonl::https://…` 这样的多跳 fsspec URL,并逐跳累积协议配置;旧实现最终却返回循环内的 `storage_options`,它只代表最后处理的一跳。于是 zip 的读取模式、前序对象存储凭据或其他协议参数会被静默丢失,路径仍然完整,配置却已经与路径链脱节。

返回契约

每个 Hop 都需要自己的协议配置

多跳 URL 的返回值包含两条平行信息:拼接后的每一段路径,以及按协议归属的全部 storage options。循环局部变量适合描述当前 hop,不能代表整个 URL;既然实现已经把每次结果写入 `prepared_storage_options`,出口就必须返回这份累计映射。单跳场景两者看起来相同,也正是问题长期不易暴露的原因。

出口修复

返回循环中已经累计的映射

将函数出口从 `return …, storage_options` 改为 `return …, prepared_storage_options`,让每一跳生成的配置都保留在最终映射中。新增回归使用 `zip://data.jsonl::https://domain.org/archive.zip`,同时设置 zip 的 `mode=r` 与 https 的 `block_size=omit`,并断言结果既含两组调用方参数,也保留 https 准备阶段补入的 `trust_env=True`。

链路验证

Zip 与 HTTPS 参数同时保留下来

链式压缩包、远程文件和对象存储现在会把所有协议层的参数一起交给 fsspec,不再出现“URL 经过两跳、配置只剩一跳”的隐蔽差异;单跳行为与公开接口保持不变。改动集中在 2 个文件,核心修复 1 行、回归测试新增 14 行;文件工具测试 138 项通过、3 项跳过,9 项定向用例同步通过。