Fix label renaming and add a battery of tests
{'login': 'Rocketknight1', 'id': 12866554, 'node_id': 'MDQ6VXNlcjEyODY2NTU0', 'avatar_url': 'https://avatars.githubusercontent.com/u/12866554?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/Rocketknight1', 'html_url': 'https://github.com/Rocketknight1', 'followers_url': 'https://api.github.com/users/Rocketknight1/followers', 'following_url': 'https://api.github.com/users/Rocketknight1/following{/other_user}', 'gists_url': 'https://api.github.com/users/Rocketknight1/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/Rocketknight1/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/Rocketknight1/subscriptions', 'organizations_url': 'https://api.github.com/users/Rocketknight1/orgs', 'repos_url': 'https://api.github.com/users/Rocketknight1/repos', 'events_url': 'https://api.github.com/users/Rocketknight1/events{/privacy}', 'received_events_url': 'https://api.github.com/users/Rocketknight1/received_events', 'type': 'User', 'site_admin': False}
[]
[]
['The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/datasets/pr_4781). All of your documentation changes will be reflected on that endpoint.'
 "Why don't we deprecate label renaming already instead ?"
 "I think it'll break a lot of workflows if we deprecate it now! There isn't really a non-deprecated workflow yet - once we've added the `auto_rename_labels` option, then we can have `prepare_tf_dataset` on the `transformers` side use that, and then we can consider setting the default option to `False`, or beginning to deprecate it somehow."
 "I'm worried it's a bit of a waste of time to continue working on this behavior that shouldn't be here in the first place. Do you have a plan in mind ?"
 "@lhoestq Broadly! The plan is:\r\n\r\n1) Create the `auto_rename_labels` flag with this PR and skip label renaming if it isn't set. Leave it as `True` for backward compatibility.\r\n2) Add the label renaming logic to `model.prepare_tf_dataset` in `transformers`. That method calls `to_tf_dataset()` right now. Once the label renaming logic is moved there, `model.prepare_tf_dataset` will set `auto_rename_labels=False` when calling `to_tf_dataset()`, and do label renaming itself.\r\n\r\nAfter step 2, `auto_rename_labels` is now only necessary for backward compatibility when users use `to_tf_dataset` directly. I want to leave it alone for a while because the `model.prepare_tf_dataset` workflow is very new. However, once it is established, we can deprecate `auto_rename_labels` and then finally remove it from the `datasets` code and keep it in `transformers` where it belongs."
 'I see ! Could it be possible to not add `auto_rename_labels` at all, since you want to remove it at the end ? Something roughly like this:\r\n1. show a warning in `to_tf_dataset` whevener a label is renamed automatically, saying that in the next major release this will be removed\r\n1. add the label renaming logic in `transformers` (to not have the warning)\r\n1. after some time, do a major release 3.0.0 and remove label renaming completely in `to_tf_dataset`\r\n\r\nWhat do you think ? cc @LysandreJik in case you have an opinion on this process.']
{'url': 'https://api.github.com/repos/huggingface/datasets/pulls/4781', 'html_url': 'https://github.com/huggingface/datasets/pull/4781', 'diff_url': 'https://github.com/huggingface/datasets/pull/4781.diff', 'patch_url': 'https://github.com/huggingface/datasets/pull/4781.patch', 'merged_at': None}
This PR makes some changes to label renaming in `to_tf_dataset()`, both to fix some issues when users input something we weren't expecting, and also to make it easier to deprecate label renaming in future, if/when we want to move this special-casing logic to a function in `transformers`.

The main changes are:
- Label renaming now only happens when the `auto_rename_labels` argument is set. For backward compatibility, this defaults to `True` for now.
- If the user requests "label" but the data collator renames that column to "labels", the label renaming logic will now handle that case correctly.
- Added a battery of tests to make this more reliable in future.
- Adds an optimization to loading in `to_tf_dataset()` for unshuffled datasets (uses slicing instead of a list of indices)

Fixes #4772
{'url': 'https://api.github.com/repos/huggingface/datasets/issues/4781/reactions', 'total_count': 0, '+1': 0, '-1': 0, 'laugh': 0, 'hooray': 0, 'confused': 0, 'heart': 0, 'rocket': 0, 'eyes': 0}