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')