I don’t think any existing library offers the option to accept 1.1 but warn if 1.1 features are used. Current options are “silently accept 1.1” and “accept 1.0, but fail on 1.1”. And no implementation offers a choice between those modes, it’s one or the other.
Ideally, the stdlib implementation (and tomli) could offer 3 modes:
- 1.0 only
- 1.1, warning if new features are used
- full 1.1
Getting that backported to Pythons before 3.15 is probably a big ask (the PEP adding tomllib says that new versions should be treated as bugfixes, which I assume means backporting to supported older versions of Python, but that doesn’t seem to have happened yet, and extra operating modes is a bit more than just supporting a new version). But if it’s in 3.15, tools can use tomli for backports.
There’s also the question of tools (uv) not written in Python, who have their own libraries to consider.
Agreed. What I’m not sure about is how happy users will be at needing to update their tools. I think they should be OK with it, but there’s always someone stuck on an old version. And I suspect many people will only discover the need to update when something breaks. Which sucks.
I have special privilege here - as a tool maintainer, I can blame the spec authors, and as a spec author, I can blame the tools. Which cup is the ball under? ![]()
IMO, there’s no really good answer here, just a set of trade-offs.