Consider pyproject.toml features when detecting pyo3 #1014
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We have a mixed python/Rust project which uses PyO3. PyO3 is declared as an optional dependency of our crate, which gets enabled with a feature
python
. This allows us to build the crate as a Rust-only library as well.Starting with maturin 0.13.0 (and also in the master branch), we have noticed that maturin does no longer detect pyo3, so it tries to use CFFI bindings rather than pyo3 bindings. With maturin <0.13 we were using
cargo-extra-args
inpyproject.toml
, and with maturin >=0.13 we have switched this tofeatures
(also inpyproject.toml
).This repository demonstrates this.
Looking at the code, we think that the problem is that the features enabled in
pyproject.toml
are not merged when obtaining the cargo metadata to produce the dependency graph.