Since python3.11 we are able to use builtin library tomllib before we had access to third party library tomli and a few others.
I did not have analyzed both packages deeply but came to the conclusion, that I am able to replace tomli with tomllib for my purposes.
My issue I have with the situation: How to handle the change while also supporting down to 3.9?
Is there a solution to provide different dependencies in pyproject.toml for different versions of python (with additons to codebase changes accordingly)?
This Question could be probably generalized, but I think the example gives a good picture of the general issue I face.
You can use PEP 496 – Environment Markers and PEP 508 – Dependency specification for Python Software Packages; they're usable in setup.py, setup.cfg, pyproject.toml, requirements.txt. In particular see PEP 631 – Dependency specification in pyproject.toml for pyproject.toml:
[project]
dependencies = [
'tomli ; python_version < "3.11"'
]
After installing or skipping tomli you test presence of tomllib/tomli in the code:
try
import tomllib
except ImportError:
try
import tomli
except ImportError:
sys.exit('Error: This program requires either tomllib or tomli but neither is available')