-
Notifications
You must be signed in to change notification settings - Fork 2.2k
🐍 Drop Python 3.9 #4183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
🐍 Drop Python 3.9 #4183
Conversation
The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
# Handle DeepSeek-R1 <tool_call> token, see the above comment for details | ||
prompt = "".join(x for x, _ in takewhile(lambda x: x[0] == x[1], zip(prompt, prompt_rejected))) | ||
prompt = "".join( | ||
x for x, _ in takewhile(lambda x: x[0] == x[1], zip(prompt, prompt_rejected, strict=False)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
only exceptions for strict=False
I think
commit ae6837f Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 18:40:18 2025 +0200 Removed tokenizer/processor creation from example scripts (#4211) commit 56a8f11 Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 17:45:44 2025 +0200 Replace setup with pyproject and fix packaging unintended modules (#4194) commit 5291015 Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 16:04:06 2025 +0200 Remove `Optional` from `processing_class` in `PPOTrainer` (#4212) commit 0588b1f Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 15:57:17 2025 +0200 Updated vLLM integration guide (#4162) Co-authored-by: Quentin Gallouédec <45557362+qgallouedec@users.noreply.github.com> commit 45ee98b Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 11:14:54 2025 +0200 Replace unittest with pytest (#4188) commit 3800a6e Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 11:13:21 2025 +0200 Hotfix: Exclude transformers 4.57.0 for Python 3.9 (#4209) Co-authored-by: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> commit 7ad9ce8 Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 11:04:20 2025 +0200 Remove tokenizer creation from `sft` example script (#4197) commit 0c2dc14 Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 08:31:58 2025 +0200 Remove custome_container for building the docs (#4198) commit ced8b33 Author: burtenshaw <ben.burtenshaw@gmail.com> Date: Mon Oct 6 08:23:11 2025 +0200 [DOCS/FIX] lora without regrets - fix lr (#4207)
commit 65eb45c Author: Quentin Gallouédec <45557362+qgallouedec@users.noreply.github.com> Date: Mon Oct 6 13:07:18 2025 -0600 Apply style and revert change in `sft_video_llm` example (#4214) commit ae6837f Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 18:40:18 2025 +0200 Removed tokenizer/processor creation from example scripts (#4211) commit 56a8f11 Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 17:45:44 2025 +0200 Replace setup with pyproject and fix packaging unintended modules (#4194) commit 5291015 Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 16:04:06 2025 +0200 Remove `Optional` from `processing_class` in `PPOTrainer` (#4212) commit 0588b1f Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 15:57:17 2025 +0200 Updated vLLM integration guide (#4162) Co-authored-by: Quentin Gallouédec <45557362+qgallouedec@users.noreply.github.com> commit 45ee98b Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 11:14:54 2025 +0200 Replace unittest with pytest (#4188) commit 3800a6e Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 11:13:21 2025 +0200 Hotfix: Exclude transformers 4.57.0 for Python 3.9 (#4209) Co-authored-by: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> commit 7ad9ce8 Author: Sergio Paniego Blanco <sergiopaniegoblanco@gmail.com> Date: Mon Oct 6 11:04:20 2025 +0200 Remove tokenizer creation from `sft` example script (#4197) commit 0c2dc14 Author: Albert Villanova del Moral <8515462+albertvillanova@users.noreply.github.com> Date: Mon Oct 6 08:31:58 2025 +0200 Remove custome_container for building the docs (#4198) commit ced8b33 Author: burtenshaw <ben.burtenshaw@gmail.com> Date: Mon Oct 6 08:23:11 2025 +0200 [DOCS/FIX] lora without regrets - fix lr (#4207)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see that you removed the CI tests for Python 3.9, which makes sense given its upcoming end of life at the end of October.
However, I noticed that you're also replacing typing.Optional
and typing.Union
. Since these are not deprecated, these changes don't seem strictly necessary. Are we intentionally introducing incompatibility with Python 3.9, even if we're no longer officially supporting it?
"Programming Language :: Python :: 3.13" | ||
] | ||
requires-python = ">=3.9" | ||
requires-python = ">=3.10" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I just saw this now! 😅
You're right, it's not strictly needed. And this is a result of upgrading the ruff target version to py310 This would indeed break the support for python3.9. Which I think is ok, only 1% of users are still using it, and I suspect that these users actually use an old version of TRL |
Wdyt? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I agree.
Additionally, with requires-python = ">=3.10"
in the pyproject.toml file, trl
will not be able to be installed in Python 3.9 environments anymore.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the other hand, I think it might be slightly early to drop support before the end-of-life date itself: 31 October.
I would suggest merging (and releasing) this PR early November, so that users and downstream projects still get a full compatibility window until the end of the month. This follows standard open-source practice: drop in the first release after the end-of-life date.
What do you think?
What does this PR do?
Python 3.14 release: 2025-10-07, see https://devguide.python.org/versions/
TRL usage:
Main changes:
Union[X, Y]
becomesX | Y
(syntax Python 3.10+)Optional[X] becomes
X | None`strict: bool
when usingzip
. In most cases, it'sTrue
, expect inapply_chat_template