meson-python icon indicating copy to clipboard operation
meson-python copied to clipboard

ENH: add support for dynamic dependencies computation

Open dnicolodi opened this issue 2 years ago • 2 comments

When dependencies is specified as a dynamic field in the [project] section in pyproject.toml, the dependencies reported for the sdist are copied from the dependencies field in the [tool.meson-python] section. More importantly, the dependencies reported for the wheels are computed combining this field and the "build-time-pins" field in the same section completed with the build time version information.

The dependencies and build-time-pins fields in the [tool.meson-python] section accept the standard metadata dependencies syntax as specified in PEP 440. The build-time-pins field cannot contain markers or extras but it is expanded as a format string where the v variable is bound to the version of the package to which the dependency requirements applies present at the time of the build parsed as a packaging.version.Version object.

This is based on #304 to incorporate the metadata handling simplification introduced there.

This ass a dependency on importlib_metatada for Python 3.7. In principle it could be made conditional to the use of build-time-pins but I don't think it is worth the trouble. It also adds a dependency on packaging, but it is already a transitive dependency of meson-python via the pyproject_metadata dependency.

dnicolodi avatar Feb 23 '23 22:02 dnicolodi

I just wanted to experiment with how this would look like in practice. Working on this made me realize that I didn't completely understand the problem.

Matching version with more than three components is an easy fix. Added. You can use {v.major}.{v.minor}.{v.micro}.{v[3]}.{v[4]}. It is not pretty, but that's what you get for using crazy version numbers.

dnicolodi avatar Feb 23 '23 22:02 dnicolodi

I converted the PR to draft while we wait for a resolution in #29, so that the state of PR log is easier to understand. @dnicolodi I hope that is okay.

Once we get a decision on the issue, we can go ahead with a proper review and merge of this PR :)

FFY00 avatar Mar 14 '23 03:03 FFY00