| Crates.io | pyproject-toml |
| lib.rs | pyproject-toml |
| version | 0.13.6 |
| created_at | 2021-05-02 14:35:43.270605+00 |
| updated_at | 2025-09-12 09:01:50.655868+00 |
| description | pyproject.toml parser in Rust |
| homepage | |
| repository | https://github.com/PyO3/pyproject-toml-rs.git |
| max_upload_size | |
| id | 392210 |
| size | 71,449 |
pyproject.toml parser in Rust.
Add it to your Cargo.toml:
[dependencies]
pyproject-toml = "0.8"
then you are good to go. If you are using Rust 2015 you have to add extern crate pyproject_toml to your crate root as well.
If you want to add additional fields parsing, you can do it with serde's
flatten feature and implement the Deref trait,
for example:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PyProjectToml {
#[serde(flatten)]
inner: pyproject_toml::PyProjectToml,
tool: Option<Tool>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "kebab-case")]
pub struct Tool {
maturin: Option<ToolMaturin>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "kebab-case")]
pub struct ToolMaturin {
sdist_include: Option<Vec<String>>,
}
impl std::ops::Deref for PyProjectToml {
type Target = pyproject_toml::PyProjectToml;
fn deref(&self) -> &Self::Target {
&self.inner
}
}
impl PyProjectToml {
pub fn new(content: &str) -> Result<Self, toml::de::Error> {
toml::from_str(content)
}
}
This work is released under the MIT license. A copy of the license is provided in the LICENSE file.