# Datasets changelog
> Loads and processes machine-learning datasets of any size from one API.
- Vendor: Hugging Face
- Category: AI
- Official site: https://huggingface.co/docs/datasets
- Tracked by: What's New (https://whatsnew.fyi/product/hugging-face-datasets)
- Harvested from: GitHub (huggingface/datasets)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'.
## Releases
### 5.0.1
- Date: 2026-07-28
- Version: 5.0.1
- Original notes: https://github.com/huggingface/datasets/releases/tag/5.0.1
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/5.0.1
- **fixed** — Fix version string in __init__.py
- **fixed** — Fix conda build
- **fixed** — Fix JSON loader schema inference for files starting with a UTF-8 BOM
- **added** — Support hermes traces
- **fixed** — Fix batch(by_column=...) crashing after shard/shuffle/split
- **fixed** — Fix traces streaming
- **added** — Support droid agent traces
- **fixed** — Fix lance auth
- **security** — Fix symlink-following arbitrary file write in archive extraction
- **fixed** — Fix resuming dataloader twice resetting the dataloader
- **fixed** — Validate Arrow IPC record batches
- **fixed** — Make the dataset fingerprint independent of Arrow chunking
- **fixed** — Fix casting a nullable LargeList to a different inner type
- **fixed** — Fix column drop in Arrow path of axis=1 concatenation
- **fixed** — Raise on length mismatch in batched IterableDataset.map
- **fixed** — Fix require_storage_embed recursing into require_storage_cast
- **security** — Fix path traversal via metadata file_name in folder-based builders
- **added** — Support batched=True in Dataset.to_dict
- **fixed** — Fix hdf5 external files
- **fixed** — Keep flat numeric columns with nulls numeric in numpy format
- **fixed** — Fix CSV loader dropping on_bad_lines/encoding_errors on pandas 2.0-2.2
##### Bug fixes
* Fix version string in __init__.py by @qgallouedec in https://github.com/huggingface/datasets/pull/8244
* fix conda build by @lhoestq in https://github.com/huggingface/datasets/pull/8250
* Fix JSON loader schema inference for files starting with a UTF-8 BOM (#8241) by @archievi in https://github.com/huggingface/datasets/pull/8243
* Support hermes traces by @lhoestq in https://github.com/huggingface/datasets/pull/8255
* Fix batch(by_column=...) crashing after shard/shuffle/split by @pkooij in https://github.com/huggingface/datasets/pull/8259
* fix traces streaming by @lhoestq in https://github.com/huggingface/datasets/pull/8277
* support droid agent traces by @cfahlgren1 in https://github.com/huggingface/datasets/pull/8263
* Fix CI: commit operation equality (hfh 1.20.0) and pytest parametrize collection error by @Wauplin in https://github.com/huggingface/datasets/pull/8283
* Fix lance auth by @lhoestq in https://github.com/huggingface/datasets/pull/8301
* Fix symlink-following arbitrary file write in archive extraction by @AAtomical in https://github.com/huggingface/datasets/pull/8303
* Bug Fix: Resuming Twice Resets the Dataloader by @francesco-bertolotti in https://github.com/huggingface/datasets/pull/8295
* Bump fsspec and simpler wds compr by @lhoestq in https://github.com/huggingface/datasets/pull/8337
* fix: validate Arrow IPC record batches by @XciD in https://github.com/huggingface/datasets/pull/8350
* Make the dataset fingerprint independent of Arrow chunking by @SuryanshSS1011 in https://github.com/huggingface/datasets/pull/8339
* Fix casting a nullable LargeList to a different inner type by @vineethsaivs in https://github.com/huggingface/datasets/pull/8346
* docs: replace AutoFeatureExtractor with AutoImageProcessor in image preprocessing docs by @gautamkishore in https://github.com/huggingface/datasets/pull/8326
* Fix column drop in Arrow path of axis=1 concatenation by @ebarkhordar in https://github.com/huggingface/datasets/pull/8342
* Raise on length mismatch in batched IterableDataset.map by @sohumt123 in https://github.com/huggingface/datasets/pull/8332
* Fix require_storage_embed recursing into require_storage_cast by @vineethsaivs in https://github.com/huggingface/datasets/pull/8349
* Fix path traversal via metadata file_name in folder-based builders by @Kaif10 in https://github.com/huggingface/datasets/pull/8325
* Support batched=True in Dataset.to_dict by @vineethsaivs in https://github.com/huggingface/datasets/pull/8333
* Fix hdf5 external files by @lhoestq in https://github.com/huggingface/datasets/pull/8355
* remove bad require_storage test by @lhoestq in https://github.com/huggingface/datasets/pull/8357
* ensure fiels are in repo by @lhoestq in https://github.com/huggingface/datasets/pull/8356
* Keep flat numeric columns with nulls numeric in numpy format by @ebarkhordar in https://github.com/huggingface/datasets/pull/8352
* Fix bucket dataset card handling and push metadata accounting by @pjh4993 in https://github.com/huggingface/datasets/pull/8354
* Fix CSV loader dropping on_bad_lines/encoding_errors on pandas 2.0-2.2 by @ebarkhordar in https://github.com/huggingface/datasets/pull/8358
* Keep integers on the python read path for fixed-shape ArrayXD columns with nulls by @ebarkhordar in https://github.com/huggingface/datasets/pull/8363
* Rebatch arrow source before formatting in IterableDataset.filter to fix resume data loss by @ebarkhordar in https://github.com/huggingface/datasets/pull/8360
* Decode Json() columns in Dataset.to_pandas() by @ebarkhordar in https://github.com/huggingface/datasets/pull/8344
* fix buckets on windows by @lhoestq in https://github.com/huggingface/datasets/pull/8369
* Fix DatasetDict.push_to_hub leaving removed splits in the dataset card by @pjh4993 in https://github.com/huggingface/datasets/pull/8367
* Preserve nullable integer columns in to_json/to_csv/to_sql by @ebarkhordar in https://github.com/huggingface/datasets/pull
_[Truncated at 4000 characters — full notes: https://github.com/huggingface/datasets/releases/tag/5.0.1]_
### 5.0.0
- Date: 2026-06-05
- Version: 5.0.0
- Original notes: https://github.com/huggingface/datasets/releases/tag/5.0.0
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/5.0.0
- **added** — Parse Agent traces messages for SFT using the teich library to enable training on traces from claude_code, pi, codex and other sources
- **added** — Use multiple input shards for shuffle buffer in streaming mode with configurable max_buffer_input_shards parameter
- **added** — Add batch(by_column=...) method to batch examples by a specified column, useful for robotics datasets
- **added** — Add Apache Iceberg format support
- **added** — Add TsFile (Apache IoTDB) packaged builder with per-device wide format
- **added** — Add 3D mesh support and MeshFolder builder
- **added** — Add .conll / .conllu dataset format loader for CoNLL-2003, 2000, and U formats
- **added** — Add num_proc argument to Dataset.to_sql
- **changed** — Default shuffling mechanism now uses multiple input shards instead of single shard
- **changed** — Support fsspec 2026.4.0
- **changed** — Pass library_name and version to HfApi in dataset push and delete paths
- **fixed** — Fix storage_options lookup for streaming Lance datasets
- **fixed** — Fix Parquet streaming hangs at the end of script
- **fixed** — Fix parquet reshard
- **fixed** — Fix parquet columns argument
- **fixed** — Fix progress bar exceeding total when load_from_cache_file=False in map operation
- **fixed** — Fix single lance file from pylance 7.0
##### Datasets Features
###### Agent traces
* Parse Agent traces messages for SFT using `teich` by @lhoestq in https://github.com/huggingface/datasets/pull/8232
* Agent traces from claude_code/pi/codex and others can now be loaded with load_dataset
* Using the `teich` library (new optional dependency), traces are parsed to `messages` to enable training on traces using e.g. `trl`
* Load the data:
```python
>>> from datasets import load_dataset
>>> ds = load_dataset("lhoestq/agent-traces-example", split="train")
>>> ds[0]["messages"]
[{'role': 'user', 'content': 'Download a random dataset from Hugging Face, use DuckDB to inspect it, and come back with a short report about it. Be concise and include: dataset name, what files/format you found, row count or rough size if you can determine it,...'
...]
```
* Train on agent traces:
```bash
trl sft --dataset-name lhoestq/agent-traces-example ...
```
* find all the Agent traces datasets on HF here: https://huggingface.co/datasets?format=format:agent-traces&sort=trending
###### Next-level shuffling in streaming mode
* Use multiple input shards for shuffle buffer by @lhoestq in https://github.com/huggingface/datasets/pull/8194
```python
ds = load_dataset(..., streaming=True)
ds = ds.shuffle(seed=42)
# or configure local buffer shuffling manually, default is:
ds = ds.shuffle(seed=42, buffer_size=1000, max_buffer_input_shards=10)
```
before👎:
after✨:
toy example comparison
```python
from datasets import IterableDataset
ds = IterableDataset.from_dict({"i": range(123_456_789)}, num_shards=1024)
ds = ds.shuffle(seed=42)
print("Cold start ids:")
print(list(ds.take(10)["i"]))
print("Nominal regime ids:")
print(list(ds.skip(10_000).take(10)["i"]))
```
before👎:
```
Cold start ids:
[6148853, 6149537, 6149418, 6149202, 6149197, 6149622, 6148849, 6149461, 6148965, 6148858]
Nominal regime ids:
[6149537, 6149418, 6149202, 6149197, 6149622, 6148849, 6149461, 6148965, 6148858, 6149290]
```
after✨:
```
Cold start ids:
[7836668, 9283505, 95847927, 482299, 9283471, 482341, 112003312, 59920157, 43764666, 95847871]
Nominal regime ids:
[9283505, 95847927, 482299, 9283471, 482341, 112003312, 59920157, 43764666, 95847871, 16758448]
```
Note: `ds.state_dict()` and `ds.load_state_dict()` are still supported for this improved shuffling :) enabling dataset checkpointing
Note 2: it uses threads to fetch the first examples in parallel from the input shards
Note 3: This is a BREAKING CHANGE: the default shuffling mechanism now uses multiple input shards. You can get the old mechanism by passing `max_buffer_input_shards=1` to `IterableDataset.shuffle()`
###### New batching features for robotics datasets
* Add batch(by_column=...) by @lhoestq in https://github.com/huggingface/datasets/pull/8172
```python
from datasets import Dataset
ds = Dataset.from_dict({"episode": [0] * 10 + [1] * 10, "frame": list(range(10)) * 2})
# ds = ds.to_iterable_dataset()
ds = ds.batch(by_column="episode")
for x in ds:
print(x)
# {'episode': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'frame': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}
# {'episode': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'frame': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}
```
###### New supported formats
* Add Apache Iceberg format support by @frankliee in https://github.com/huggingface/datasets/pull/8148
* feat: add TsFile (Apache IoTDB) packaged builder with per-device wide format by @JackieTien97 in https://githu
_[Truncated at 4000 characters — full notes: https://github.com/huggingface/datasets/releases/tag/5.0.0]_
### 4.8.5
- Date: 2026-04-27
- Version: 4.8.5
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.8.5
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.8.5
- **fixed** — Decode Json() values before calling DataFrame.to_json()
- **fixed** — Decode JSON type before to_list or to_dict is called
- **fixed** — Fix batching for table-formatted datasets
- **fixed** — Fix iterable map resume state
- **fixed** — Don't embed remote files in download_and_prepare to parquet
- **added** — Parse agent traces
- **removed** — Remove print statement in JSON processing
- **changed** — Don't include files list in DatasetInfo
- **fixed** — Fix mask in embed_storage for remote files
- **fixed** — Fix original_files missing in ci json test
- **fixed** — Fix null in embed storage
- **fixed** — Fix base_path in integration tests
##### Main bug fixes
* fix: decode Json() values before calling DataFrame.to_json() (#8116) by @Brianzhengca in https://github.com/huggingface/datasets/pull/8122
* Fix: decode JSON type before to_list or to_dict is called by @ItsTania in https://github.com/huggingface/datasets/pull/8137
* Fix batching for table-formatted datasets by @bluehyena in https://github.com/huggingface/datasets/pull/8126
* Fix iterable map resume state by @Brianzhengca in https://github.com/huggingface/datasets/pull/8147
* don't embed remote files in download_and_prepare to parquet by @lhoestq in https://github.com/huggingface/datasets/pull/8150
##### Other improvements and bug fixes
* Parse agent traces by @lhoestq in https://github.com/huggingface/datasets/pull/8113
* 🔒 Pin GitHub Actions to commit SHAs by @paulinebm in https://github.com/huggingface/datasets/pull/8114
* chore: bump doc-builder SHA for PR upload workflow by @rtrompier in https://github.com/huggingface/datasets/pull/8134
* Remove print statement in JSON processing by @lhoestq in https://github.com/huggingface/datasets/pull/8136
* Don't include files list DatasetInfo (and remove old stuff) by @lhoestq in https://github.com/huggingface/datasets/pull/8128
* update ci uer by @lhoestq in https://github.com/huggingface/datasets/pull/8139
* fix warning in ci by @lhoestq in https://github.com/huggingface/datasets/pull/8140
* fix mask in embed_storage for remote files by @lhoestq in https://github.com/huggingface/datasets/pull/8151
* fix original_files missing in ci json test by @lhoestq in https://github.com/huggingface/datasets/pull/8152
* Fix null in embed storage by @lhoestq in https://github.com/huggingface/datasets/pull/8154
* Fix base_path in integration tests by @lhoestq in https://github.com/huggingface/datasets/pull/8155
##### New Contributors
* @paulinebm made their first contribution in https://github.com/huggingface/datasets/pull/8114
* @Brianzhengca made their first contribution in https://github.com/huggingface/datasets/pull/8122
* @bluehyena made their first contribution in https://github.com/huggingface/datasets/pull/8126
* @rtrompier made their first contribution in https://github.com/huggingface/datasets/pull/8134
* @ItsTania made their first contribution in https://github.com/huggingface/datasets/pull/8137
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.8.4...4.8.5
### 4.8.4
- Date: 2026-03-23
- Version: 4.8.4
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.8.4
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.8.4
- **changed** — Support latest torchvision
- **fixed** — Fix regression when loading JSON with one file = one object
##### What's Changed
* Support latest torchvision by @lhoestq in https://github.com/huggingface/datasets/pull/8087
* fix regression when loading JSON with one file = one object by @lhoestq in https://github.com/huggingface/datasets/pull/8086
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.8.3...4.8.4
### 4.8.3
- Date: 2026-03-19
- Version: 4.8.3
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.8.3
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.8.3
- **fixed** — Fix split_dataset_by_node step
- **fixed** — Fix docstring of Json.cast_storage
##### What's Changed
* Fix split_dataset_by_node step by @lhoestq in https://github.com/huggingface/datasets/pull/8081
* Fix docstring of Json.cast_storage by @albertvillanova in https://github.com/huggingface/datasets/pull/8080
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.8.2...4.8.3
### 4.8.2
- Date: 2026-03-17
- Version: 4.8.2
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.8.2
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.8.2
- **fixed** — Json type for empty struct
##### What's Changed
* Json type for empty struct by @lhoestq in https://github.com/huggingface/datasets/pull/8074
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.8.1...4.8.2
### 4.8.1
- Date: 2026-03-17
- Version: 4.8.1
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.8.1
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.8.1
- **fixed** — Fix formatted iter arrow double yield
##### What's Changed
* Fix formatted iter arrow double yield by @HaukurPall in https://github.com/huggingface/datasets/pull/8063
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.8.0...4.8.1
### 4.8.0
- Date: 2026-03-16
- Version: 4.8.0
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.8.0
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.8.0
- **added** — Read and write from HF Storage Buckets to load raw data, process, and save to Dataset Repos
- **added** — Support hf:// paths for loading data files from Storage Buckets
- **added** — Add max_shard_size parameter to IterableDataset.push_to_hub
- **added** — Add more arrow-native iterable operations for IterableDataset
- **changed** — Improve support of glob patterns in archives, e.g. zip://*.jsonl::hf://datasets/username/dataset-name/data.zip
- **fixed** — Fix multiprocessed push_to_hub on macOS that was causing segfault by using spawn instead of fork
- **fixed** — Fix reshard_data_sources
- **fixed** — Fix null filling in missing jsonl columns
- **fixed** — Fix to_pandas, videofolder, and load_dataset_builder kwargs in iterable datasets
- **changed** — Bump dill and multiprocess versions to support Python 3.14
- **changed** — Improve error message for invalid data_files pattern format
##### Dataset Features
* Read (and write) from [HF Storage Buckets](https://huggingface.co/storage): load raw data, process and save to Dataset Repos by @lhoestq in https://github.com/huggingface/datasets/pull/8064
```python
from datasets import load_dataset
# load raw data from a Storage Bucket on HF
ds = load_dataset("buckets/username/data-bucket", data_files=["*.jsonl"])
# or manually, using hf:// paths
ds = load_dataset("json", data_files=["hf://buckets/username/data-bucket/*.jsonl"])
# process, filter
ds = ds.map(...).filter(...)
# publish the AI-ready dataset
ds.push_to_hub("username/my-dataset-ready-for-training")
```
This also fixes multiprocessed push_to_hub on macos that was causing segfault (now it uses spawn instead of fork).
And it bumps `dill` and `multiprocess` versions to support python 3.14
* Datasets streaming iterable packaged improvements and fixes by @Michael-RDev in https://github.com/huggingface/datasets/pull/8068
* added `max_shard_size` to IterableDataset.push_to_hub (but requires iterating twice to know the full dataset twice - improvements are welcome)
* more arrow-native iterable operations for IterableDataset
* better support of glob patterns in archives, e.g. `zip://*.jsonl::hf://datasets/username/dataset-name/data.zip`
* fixes for to_pandas, videofolder, load_dataset_builder kwargs
##### What's Changed
* fix reshard_data_sources by @lhoestq in https://github.com/huggingface/datasets/pull/8061
* Improve error message for invalid data_files pattern format by @kushalkkb in https://github.com/huggingface/datasets/pull/8060
* fix null filling in missing jsonl columns by @lhoestq in https://github.com/huggingface/datasets/pull/8069
##### New Contributors
* @kushalkkb made their first contribution in https://github.com/huggingface/datasets/pull/8060
* @Michael-RDev made their first contribution in https://github.com/huggingface/datasets/pull/8068
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.7.0...4.8.0
### 4.7.0
- Date: 2026-03-09
- Version: 4.7.0
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.7.0
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.7.0
- **added** — Add Json() type to support JSON Lines files with arbitrary JSON objects and mixed types in features, usable with load_dataset(), .map(), .cast(), .from_dict(), and .from_list()
- **added** — Add on_mixed_types="use_json" parameter to .from_dict(), .from_list(), and .map() to automatically use Json() type for mixed types
- **fixed** — Fix silent data loss in push_to_hub when num_proc > num_shards
- **fixed** — Fix non-deterministic behavior by sorting metadata extensions
- **fixed** — Preserve features when chaining filter() on typed IterableDataset
- **fixed** — Handle nested null types in feature alignment for multi-proc map
- **fixed** — Fix unstable tokenizer fingerprinting to enable map cache reuse
- **fixed** — Don't extract bad files
- **changed** — Use num_examples instead of len(self) for iterable_dataset's SplitInfo
- **changed** — Limit dataset listing to first 20 entries in readme
##### Datasets Features
* Add `Json()` type by @lhoestq in https://github.com/huggingface/datasets/pull/8027
* JSON Lines files that contain arbitrary JSON objects like tool calling datasets are now supported. When there is a field or subfield containing mixed types (e.g. mix of str/int/float/dict/list or dictionaries with arbitrary keys), the `Json()`type is used to store such data that would normally not be supported in Arrow/Parquet
* Use the `Json()` type in `Features()` for any dataset, it is supported in any functions that accepts `features=`like `load_dataset()`, `.map()`, `.cast()`, `.from_dict()`, `.from_list()`
* Use `on_mixed_types="use_json"` to automatically set the `Json()` type on mixed types in `.from_dict()`, `.from_list()` and `.map()`
Examples:
You can use `on_mixed_types="use_json"` or specify `features=` with a [`Json`] type:
```python
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]})
Traceback (most recent call last):
...
File "pyarrow/error.pxi", line 92, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not convert 'foo' with type str: tried to convert to int64
>>> features = Features({"a": Json()})
>>> ds = Dataset.from_dict({"a": [0, "foo", {"subfield": "bar"}]}, features=features)
>>> ds.features
{'a': Json()}
>>> list(ds["a"])
[0, "foo", {"subfield": "bar"}]
```
This is also useful for lists of dictionaries with arbitrary keys and values, to avoid filling missing fields with None:
```python
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]})
>>> ds.features
{'a': List({'b': Value('int64'), 'c': Value('int64')})}
>>> list(ds["a"])
[[{'b': 0, 'c': None}, {'b': None, 'c': 0}]] # missing fields are filled with None
>>> features = Features({"a": List(Json())})
>>> ds = Dataset.from_dict({"a": [[{"b": 0}, {"c": 0}]]}, features=features)
>>> ds.features
{'a': List(Json())}
>>> list(ds["a"])
[[{'b': 0}, {'c': 0}]] # OK
```
Another example with tool calling data and the `on_mixed_types="use_json"` argument (useful to not have to specify `features=` manually):
```python
>>> messages = [
... {"role": "user", "content": "Turn on the living room lights and play my electronic music playlist."},
... {"role": "assistant", "tool_calls": [
... {"type": "function", "function": {
... "name": "control_light",
... "arguments": {"room": "living room", "state": "on"}
... }},
... {"type": "function", "function": {
... "name": "play_music",
... "arguments": {"playlist": "electronic"} # mixed-type here since keys ["playlist"] and ["room", "state"] are different
... }}]
... },
... {"role": "tool", "name": "control_light", "content": "The lights in the living room are now on."},
... {"role": "tool", "name": "play_music", "content": "The music is now playing."},
... {"role": "assistant", "content": "Done!"}
... ]
>>> ds = Dataset.from_dict({"messages": [messages]}, on_mixed_types="use_json")
>>> ds.features
{'messages': List({'role': Value('string'), 'content': Value('string'), 'tool_calls': List(Json()), 'name': Value('string')})}
>>> ds[0][1]["tool_calls"][0]["function"]["arguments"]
{"room": "living room", "state": "on"}
```
##### What's Changed
* Fix typos in iterable_dataset.py by @omkar-334 in https://github.com/huggingface/datasets/pull/8049
* Fix non-deterministic by sorting metadata extensions (#8034) by @Nexround in https://github.com/huggingface/datasets/pull/8039
* Use num_examples instead of len(self) for iterable_dataset's SplitInfo by @HaukurPall in https://github.com/huggingface/datasets/pull/8041
* Fix silent data loss in push_to_hub when num_proc > num_shards by @HaukurPall in https://github.com/huggingface/datasets/pull/8044
* Don't extract bad files by @lhoestq in https://github.com/huggingface/datasets/pull/8056
* fix(iterable_dataset): preserve features when chaining filter()
_[Truncated at 4000 characters — full notes: https://github.com/huggingface/datasets/releases/tag/4.7.0]_
### 4.6.1
- Date: 2026-02-27
- Version: 4.6.1
- Original notes: https://github.com/huggingface/datasets/releases/tag/4.6.1
- Permalink: https://whatsnew.fyi/product/hugging-face-datasets/releases/4.6.1
- **fixed** — Remove temporary file in push to hub
##### Bug fix
* Remove tmp file in push to hub by @lhoestq in https://github.com/huggingface/datasets/pull/8030
**Full Changelog**: https://github.com/huggingface/datasets/compare/4.6.0...4.6.1