Add `fn_kwargs` to `map` and `filter` of `IterableDataset` and `IterableDatasetDict`
NONE
_The documentation is not available anymore as the PR was closed or merged._
2023-05-02T16:52:19Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1531815349
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5bTaW1
https://api.github.com/repos/huggingface/datasets/issues/comments/1531815349/reactions
2023-05-22T08:08:24Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1531815349
https://avatars.githubusercontent.com/u/99929124?v=4
https://api.github.com/users/HuggingFaceDocBuilderDev/events{/privacy}
https://api.github.com/users/HuggingFaceDocBuilderDev/followers
https://api.github.com/users/HuggingFaceDocBuilderDev/following{/other_user}
https://api.github.com/users/HuggingFaceDocBuilderDev/gists{/gist_id}
https://github.com/HuggingFaceDocBuilderDev
HuggingFaceDocBuilderDev
U_kgDOBfTMJA
https://api.github.com/users/HuggingFaceDocBuilderDev/orgs
https://api.github.com/users/HuggingFaceDocBuilderDev/received_events
https://api.github.com/users/HuggingFaceDocBuilderDev/repos
https://api.github.com/users/HuggingFaceDocBuilderDev/starred{/owner}{/repo}
https://api.github.com/users/HuggingFaceDocBuilderDev/subscriptions
User
https://api.github.com/users/HuggingFaceDocBuilderDev
public
CONTRIBUTOR
Sorry, the local test passed because it was inadvertently testing the main branch. I am currently fixing where the test failed.
2023-05-03T00:18:13Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1532305874
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5bVSHS
https://api.github.com/repos/huggingface/datasets/issues/comments/1532305874/reactions
2023-05-03T00:18:13Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1532305874
https://avatars.githubusercontent.com/u/3927621?v=4
https://api.github.com/users/yuukicammy/events{/privacy}
https://api.github.com/users/yuukicammy/followers
https://api.github.com/users/yuukicammy/following{/other_user}
https://api.github.com/users/yuukicammy/gists{/gist_id}
https://github.com/yuukicammy
yuukicammy
MDQ6VXNlcjM5Mjc2MjE=
https://api.github.com/users/yuukicammy/orgs
https://api.github.com/users/yuukicammy/received_events
https://api.github.com/users/yuukicammy/repos
https://api.github.com/users/yuukicammy/starred{/owner}{/repo}
https://api.github.com/users/yuukicammy/subscriptions
User
https://api.github.com/users/yuukicammy
public
CONTRIBUTOR
- I have fixed the bug and addressed the above two points.
- I have tested locally and confirmed that the test passes.

Please check the contents. @lhoestq 

5715a7e64bdd2951e6705aee58d592392e1538d6
2023-05-03T02:01:48Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1532368695
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5bVhc3
https://api.github.com/repos/huggingface/datasets/issues/comments/1532368695/reactions
2023-05-03T02:01:48Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1532368695
https://avatars.githubusercontent.com/u/3927621?v=4
https://api.github.com/users/yuukicammy/events{/privacy}
https://api.github.com/users/yuukicammy/followers
https://api.github.com/users/yuukicammy/following{/other_user}
https://api.github.com/users/yuukicammy/gists{/gist_id}
https://github.com/yuukicammy
yuukicammy
MDQ6VXNlcjM5Mjc2MjE=
https://api.github.com/users/yuukicammy/orgs
https://api.github.com/users/yuukicammy/received_events
https://api.github.com/users/yuukicammy/repos
https://api.github.com/users/yuukicammy/starred{/owner}{/repo}
https://api.github.com/users/yuukicammy/subscriptions
User
https://api.github.com/users/yuukicammy
public
MEMBER
Cool ! You can run `make style` to fix code formatting to fix the ci
2023-05-03T17:05:03Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1533401172
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5bZdhU
https://api.github.com/repos/huggingface/datasets/issues/comments/1533401172/reactions
2023-05-03T17:05:03Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1533401172
https://avatars.githubusercontent.com/u/42851186?v=4
https://api.github.com/users/lhoestq/events{/privacy}
https://api.github.com/users/lhoestq/followers
https://api.github.com/users/lhoestq/following{/other_user}
https://api.github.com/users/lhoestq/gists{/gist_id}
https://github.com/lhoestq
lhoestq
MDQ6VXNlcjQyODUxMTg2
https://api.github.com/users/lhoestq/orgs
https://api.github.com/users/lhoestq/received_events
https://api.github.com/users/lhoestq/repos
https://api.github.com/users/lhoestq/starred{/owner}{/repo}
https://api.github.com/users/lhoestq/subscriptions
User
https://api.github.com/users/lhoestq
public
CONTRIBUTOR
I had forgotten about it. I did it. @lhoestq 
00248926a37c6f1387614aa388c36fdc105a59f5
2023-05-04T02:38:10Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1534001664
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5bbwIA
https://api.github.com/repos/huggingface/datasets/issues/comments/1534001664/reactions
2023-05-05T03:03:04Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1534001664
https://avatars.githubusercontent.com/u/3927621?v=4
https://api.github.com/users/yuukicammy/events{/privacy}
https://api.github.com/users/yuukicammy/followers
https://api.github.com/users/yuukicammy/following{/other_user}
https://api.github.com/users/yuukicammy/gists{/gist_id}
https://github.com/yuukicammy
yuukicammy
MDQ6VXNlcjM5Mjc2MjE=
https://api.github.com/users/yuukicammy/orgs
https://api.github.com/users/yuukicammy/received_events
https://api.github.com/users/yuukicammy/repos
https://api.github.com/users/yuukicammy/starred{/owner}{/repo}
https://api.github.com/users/yuukicammy/subscriptions
User
https://api.github.com/users/yuukicammy
public
NONE
Thanks for putting this together @yuukicammy ! Looking forward to using this new addition ASAP. 
@lhoestq - sorry to bother you with this, but if this looks good to you, any chance we could get this merged in? 

Thanks again to you both! 
2023-05-18T17:07:36Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1553358719
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5cll9_
https://api.github.com/repos/huggingface/datasets/issues/comments/1553358719/reactions
2023-05-18T17:07:36Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1553358719
https://avatars.githubusercontent.com/u/4266396?v=4
https://api.github.com/users/brianhill11/events{/privacy}
https://api.github.com/users/brianhill11/followers
https://api.github.com/users/brianhill11/following{/other_user}
https://api.github.com/users/brianhill11/gists{/gist_id}
https://github.com/brianhill11
brianhill11
MDQ6VXNlcjQyNjYzOTY=
https://api.github.com/users/brianhill11/orgs
https://api.github.com/users/brianhill11/received_events
https://api.github.com/users/brianhill11/repos
https://api.github.com/users/brianhill11/starred{/owner}{/repo}
https://api.github.com/users/brianhill11/subscriptions
User
https://api.github.com/users/brianhill11
public
MEMBER
Yup there's just one test to remove and we can merge
2023-05-19T13:03:00Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1554539641
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5cqGR5
https://api.github.com/repos/huggingface/datasets/issues/comments/1554539641/reactions
2023-05-19T13:03:00Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1554539641
https://avatars.githubusercontent.com/u/42851186?v=4
https://api.github.com/users/lhoestq/events{/privacy}
https://api.github.com/users/lhoestq/followers
https://api.github.com/users/lhoestq/following{/other_user}
https://api.github.com/users/lhoestq/gists{/gist_id}
https://github.com/lhoestq
lhoestq
MDQ6VXNlcjQyODUxMTg2
https://api.github.com/users/lhoestq/orgs
https://api.github.com/users/lhoestq/received_events
https://api.github.com/users/lhoestq/repos
https://api.github.com/users/lhoestq/starred{/owner}{/repo}
https://api.github.com/users/lhoestq/subscriptions
User
https://api.github.com/users/lhoestq
public
CONTRIBUTOR
Sorry for my understanding wrong! Correspondence has been addressed.  @lhoestq 
 ca511b7b29fdde51ffd69b58bda79220472e9e94

Thanks for your comment! @brianhill11 
2023-05-20T02:59:20Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1555445464
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5ctjbY
https://api.github.com/repos/huggingface/datasets/issues/comments/1555445464/reactions
2023-05-20T02:59:20Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1555445464
https://avatars.githubusercontent.com/u/3927621?v=4
https://api.github.com/users/yuukicammy/events{/privacy}
https://api.github.com/users/yuukicammy/followers
https://api.github.com/users/yuukicammy/following{/other_user}
https://api.github.com/users/yuukicammy/gists{/gist_id}
https://github.com/yuukicammy
yuukicammy
MDQ6VXNlcjM5Mjc2MjE=
https://api.github.com/users/yuukicammy/orgs
https://api.github.com/users/yuukicammy/received_events
https://api.github.com/users/yuukicammy/repos
https://api.github.com/users/yuukicammy/starred{/owner}{/repo}
https://api.github.com/users/yuukicammy/subscriptions
User
https://api.github.com/users/yuukicammy
public
NONE
<details>
<summary>Show benchmarks</summary>

PyArrow==8.0.0

<details>
<summary>Show updated benchmarks!</summary>

### Benchmark: benchmark_array_xd.json

| metric | read_batch_formatted_as_numpy after write_array2d | read_batch_formatted_as_numpy after write_flattened_sequence | read_batch_formatted_as_numpy after write_nested_sequence | read_batch_unformated after write_array2d | read_batch_unformated after write_flattened_sequence | read_batch_unformated after write_nested_sequence | read_col_formatted_as_numpy after write_array2d | read_col_formatted_as_numpy after write_flattened_sequence | read_col_formatted_as_numpy after write_nested_sequence | read_col_unformated after write_array2d | read_col_unformated after write_flattened_sequence | read_col_unformated after write_nested_sequence | read_formatted_as_numpy after write_array2d | read_formatted_as_numpy after write_flattened_sequence | read_formatted_as_numpy after write_nested_sequence | read_unformated after write_array2d | read_unformated after write_flattened_sequence | read_unformated after write_nested_sequence | write_array2d | write_flattened_sequence | write_nested_sequence |
|--------|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| new / old (diff) | 0.006788 / 0.011353 (-0.004564) | 0.004372 / 0.011008 (-0.006636) | 0.097746 / 0.038508 (0.059238) | 0.034858 / 0.023109 (0.011749) | 0.298122 / 0.275898 (0.022224) | 0.335272 / 0.323480 (0.011792) | 0.005810 / 0.007986 (-0.002175) | 0.004944 / 0.004328 (0.000616) | 0.072352 / 0.004250 (0.068101) | 0.041730 / 0.037052 (0.004678) | 0.316482 / 0.258489 (0.057992) | 0.338710 / 0.293841 (0.044869) | 0.027975 / 0.128546 (-0.100571) | 0.008746 / 0.075646 (-0.066901) | 0.329336 / 0.419271 (-0.089935) | 0.051327 / 0.043533 (0.007794) | 0.300695 / 0.255139 (0.045556) | 0.322813 / 0.283200 (0.039613) | 0.101133 / 0.141683 (-0.040550) | 1.422767 / 1.452155 (-0.029388) | 1.538364 / 1.492716 (0.045648) |

### Benchmark: benchmark_getitem\_100B.json

| metric | get_batch_of\_1024\_random_rows | get_batch_of\_1024\_rows | get_first_row | get_last_row |
|--------|---|---|---|---|
| new / old (diff) | 0.016698 / 0.018006 (-0.001308) | 0.447042 / 0.000490 (0.446552) | 0.007609 / 0.000200 (0.007409) | 0.000277 / 0.000054 (0.000223) |

### Benchmark: benchmark_indices_mapping.json

| metric | select | shard | shuffle | sort | train_test_split |
|--------|---|---|---|---|---|
| new / old (diff) | 0.026732 / 0.037411 (-0.010679) | 0.108295 / 0.014526 (0.093769) | 0.116905 / 0.176557 (-0.059652) | 0.173166 / 0.737135 (-0.563969) | 0.122560 / 0.296338 (-0.173779) |

### Benchmark: benchmark_iterating.json

| metric | read 5000 | read 50000 | read_batch 50000 10 | read_batch 50000 100 | read_batch 50000 1000 | read_formatted numpy 5000 | read_formatted pandas 5000 | read_formatted tensorflow 5000 | read_formatted torch 5000 | read_formatted_batch numpy 5000 10 | read_formatted_batch numpy 5000 1000 | shuffled read 5000 | shuffled read 50000 | shuffled read_batch 50000 10 | shuffled read_batch 50000 100 | shuffled read_batch 50000 1000 | shuffled read_formatted numpy 5000 | shuffled read_formatted_batch numpy 5000 10 | shuffled read_formatted_batch numpy 5000 1000 |
|--------|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| new / old (diff) | 0.394893 / 0.215209 (0.179683) | 3.950314 / 2.077655 (1.872659) | 1.780576 / 1.504120 (0.276456) | 1.579855 / 1.541195 (0.038660) | 1.711197 / 1.468490 (0.242707) | 0.521469 / 4.584777 (-4.063308) | 3.838850 / 3.745712 (0.093138) | 3.101095 / 5.269862 (-2.168767) | 1.531574 / 4.565676 (-3.034102) | 0.065291 / 0.424275 (-0.358984) | 0.011979 / 0.007607 (0.004372) | 0.496543 / 0.226044 (0.270498) | 4.965446 / 2.268929 (2.696517) | 2.250788 / 55.444624 (-53.193837) | 1.923231 / 6.876477 (-4.953245) | 2.075372 / 2.142072 (-0.066700) | 0.638708 / 4.805227 (-4.166519) | 0.142048 / 6.500664 (-6.358616) | 0.064225 / 0.075469 (-0.011244) |

### Benchmark: benchmark_map_filter.json

| metric | filter | map fast-tokenizer batched | map identity | map identity batched | map no-op batched | map no-op batched numpy | map no-op batched pandas | map no-op batched pytorch | map no-op batched tensorflow |
|--------|---|---|---|---|---|---|---|---|---|
| new / old (diff) | 1.211799 / 1.841788 (-0.629989) | 14.791822 / 8.074308 (6.717514) | 14.274993 / 10.191392 (4.083601) | 0.163942 / 0.680424 (-0.516482) | 0.017541 / 0.534201 (-0.516660) | 0.396440 / 0.579283 (-0.182843) | 0.427502 / 0.434364 (-0.006861) | 0.494273 / 0.540337 (-0.046064) | 0.586877 / 1.386936 (-0.800059) |

</details>
PyArrow==latest

<details>
<summary>Show updated benchmarks!</summary>

### Benchmark: benchmark_array_xd.json

| metric | read_batch_formatted_as_numpy after write_array2d | read_batch_formatted_as_numpy after write_flattened_sequence | read_batch_formatted_as_numpy after write_nested_sequence | read_batch_unformated after write_array2d | read_batch_unformated after write_flattened_sequence | read_batch_unformated after write_nested_sequence | read_col_formatted_as_numpy after write_array2d | read_col_formatted_as_numpy after write_flattened_sequence | read_col_formatted_as_numpy after write_nested_sequence | read_col_unformated after write_array2d | read_col_unformated after write_flattened_sequence | read_col_unformated after write_nested_sequence | read_formatted_as_numpy after write_array2d | read_formatted_as_numpy after write_flattened_sequence | read_formatted_as_numpy after write_nested_sequence | read_unformated after write_array2d | read_unformated after write_flattened_sequence | read_unformated after write_nested_sequence | write_array2d | write_flattened_sequence | write_nested_sequence |
|--------|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| new / old (diff) | 0.006846 / 0.011353 (-0.004506) | 0.004854 / 0.011008 (-0.006154) | 0.075654 / 0.038508 (0.037146) | 0.034295 / 0.023109 (0.011186) | 0.378095 / 0.275898 (0.102197) | 0.407833 / 0.323480 (0.084353) | 0.006155 / 0.007986 (-0.001830) | 0.004259 / 0.004328 (-0.000070) | 0.076195 / 0.004250 (0.071944) | 0.051901 / 0.037052 (0.014849) | 0.375027 / 0.258489 (0.116538) | 0.428189 / 0.293841 (0.134348) | 0.028814 / 0.128546 (-0.099733) | 0.009209 / 0.075646 (-0.066438) | 0.083681 / 0.419271 (-0.335591) | 0.049158 / 0.043533 (0.005625) | 0.366669 / 0.255139 (0.111530) | 0.388767 / 0.283200 (0.105568) | 0.107837 / 0.141683 (-0.033845) | 1.476354 / 1.452155 (0.024199) | 1.580160 / 1.492716 (0.087443) |

### Benchmark: benchmark_getitem\_100B.json

| metric | get_batch_of\_1024\_random_rows | get_batch_of\_1024\_rows | get_first_row | get_last_row |
|--------|---|---|---|---|
| new / old (diff) | 0.218900 / 0.018006 (0.200894) | 0.445475 / 0.000490 (0.444985) | 0.000423 / 0.000200 (0.000223) | 0.000063 / 0.000054 (0.000008) |

### Benchmark: benchmark_indices_mapping.json

| metric | select | shard | shuffle | sort | train_test_split |
|--------|---|---|---|---|---|
| new / old (diff) | 0.029740 / 0.037411 (-0.007671) | 0.115192 / 0.014526 (0.100666) | 0.122439 / 0.176557 (-0.054118) | 0.170639 / 0.737135 (-0.566496) | 0.128085 / 0.296338 (-0.168254) |

### Benchmark: benchmark_iterating.json

| metric | read 5000 | read 50000 | read_batch 50000 10 | read_batch 50000 100 | read_batch 50000 1000 | read_formatted numpy 5000 | read_formatted pandas 5000 | read_formatted tensorflow 5000 | read_formatted torch 5000 | read_formatted_batch numpy 5000 10 | read_formatted_batch numpy 5000 1000 | shuffled read 5000 | shuffled read 50000 | shuffled read_batch 50000 10 | shuffled read_batch 50000 100 | shuffled read_batch 50000 1000 | shuffled read_formatted numpy 5000 | shuffled read_formatted_batch numpy 5000 10 | shuffled read_formatted_batch numpy 5000 1000 |
|--------|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| new / old (diff) | 0.437745 / 0.215209 (0.222536) | 4.385695 / 2.077655 (2.308040) | 2.189893 / 1.504120 (0.685773) | 2.023160 / 1.541195 (0.481965) | 2.112798 / 1.468490 (0.644308) | 0.522497 / 4.584777 (-4.062280) | 3.881356 / 3.745712 (0.135644) | 3.206090 / 5.269862 (-2.063772) | 1.308241 / 4.565676 (-3.257435) | 0.065635 / 0.424275 (-0.358640) | 0.012288 / 0.007607 (0.004681) | 0.537265 / 0.226044 (0.311220) | 5.361641 / 2.268929 (3.092712) | 2.638941 / 55.444624 (-52.805684) | 2.344717 / 6.876477 (-4.531759) | 2.437619 / 2.142072 (0.295546) | 0.645079 / 4.805227 (-4.160149) | 0.143852 / 6.500664 (-6.356812) | 0.065796 / 0.075469 (-0.009673) |

### Benchmark: benchmark_map_filter.json

| metric | filter | map fast-tokenizer batched | map identity | map identity batched | map no-op batched | map no-op batched numpy | map no-op batched pandas | map no-op batched pytorch | map no-op batched tensorflow |
|--------|---|---|---|---|---|---|---|---|---|
| new / old (diff) | 1.276588 / 1.841788 (-0.565200) | 15.239396 / 8.074308 (7.165088) | 13.150591 / 10.191392 (2.959199) | 0.163635 / 0.680424 (-0.516789) | 0.017533 / 0.534201 (-0.516668) | 0.397659 / 0.579283 (-0.181624) | 0.425589 / 0.434364 (-0.008774) | 0.466570 / 0.540337 (-0.073768) | 0.563953 / 1.386936 (-0.822983) |

</details>
</details>

![](https://cml.dev/watermark.png#807d5c5ed4f8db7761b92bed498b2193acce8fb7 "CML watermark")

2023-05-22T08:12:39Z
https://github.com/huggingface/datasets/pull/5810#issuecomment-1556747014
https://api.github.com/repos/huggingface/datasets/issues/5810
IC_kwDODunzps5cyhMG
https://api.github.com/repos/huggingface/datasets/issues/comments/1556747014/reactions
2023-05-22T08:12:39Z
https://api.github.com/repos/huggingface/datasets/issues/comments/1556747014
https://avatars.githubusercontent.com/in/15368?v=4
https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}
https://api.github.com/users/github-actions%5Bbot%5D/followers
https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}
https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}
https://github.com/apps/github-actions
github-actions[bot]
MDM6Qm90NDE4OTgyODI=
https://api.github.com/users/github-actions%5Bbot%5D/orgs
https://api.github.com/users/github-actions%5Bbot%5D/received_events
https://api.github.com/users/github-actions%5Bbot%5D/repos
https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}
https://api.github.com/users/github-actions%5Bbot%5D/subscriptions
Bot
https://api.github.com/users/github-actions%5Bbot%5D
public
# Overview
I've added an argument`fn_kwargs` for map and filter methods of `IterableDataset` and `IterableDatasetDict` classes.

# Details
Currently, the map and filter methods of some classes related to `IterableDataset` do not allow specifing the arguments passed to the function. This pull request adds `fn_kwargs` to pass arguments to the mapping function. This allows users to preprocess data more flexibly.

Added `fn_kwargs` to the following classes and methods (description of the argument is also added).
1. class `FilteredExamplesIterable`
2. method `filter` of class `IterableDataset`
3. method `map` of class `IterableDatasetDict`
4. method `filter` of class `IterableDatasetDict`

# Example of changes
Here's an example of how to use the new functionality:
```python
from datasets import IterableDatasetDict

def preprocess_function(example, a=None, b=None):
    # do something
    return example

dataset = IterableDatasetDict(...)
dataset = dataset.map(preprocess_function, fn_kwargs={"a": 1, "b": 2})
```
# Related Issues
This pull request is related to the following issue:
https://github.com/huggingface/datasets/issues/3444 .

# Testing
I have added unit tests to test the new functionality.

In test_iterable_dataset.py  
- Added `test_filtered_examples_iterable_with_fn_kwargs` for [1](#details).
- Added `test_iterable_dataset_filter` for [2](#details).
- Added `test_iterable_dataset_map_with_fn_kwargs`. This is not a newly added feature, but was added because it was not tested.

In test_dataset_dict.py  
- Added `_create_dummy_iterable_dataset` for [3](#details) and [4](#details).
- Added `_create_dummy_iterable_dataset_dict` for [3](#details) and [4](#details).
- Added `test_iterable_map` for [3](#details).
- Added `test_iterable_filter` for [4](#details).

Note that, there is no test for `IterableDatasetDict` at the current main branch. I thought about writing tests for `IterableDatasetDict` in a new file, but I decided to add them in the test file for `DatasetDict` (test_dataset_dict.py).

# Checklist
- [x] Format the code.
- [x] Added tests.
- [x] Passed tests locally.