#toml-parser #pyproject #pep518 #pep639 #pep517 #pep621

pyproject-toml

Rust中的pyproject.toml解析器

20个版本 (10个破坏性更新)

0.11.0 2024年5月23日
0.10.0 2024年2月19日
0.9.0 2024年2月9日
0.8.1 2023年11月11日
0.1.1 2021年5月30日

#282 in 编码

Download history 11309/week @ 2024-04-28 19315/week @ 2024-05-05 11712/week @ 2024-05-12 11716/week @ 2024-05-19 13160/week @ 2024-05-26 13886/week @ 2024-06-02 10898/week @ 2024-06-09 10193/week @ 2024-06-16 13705/week @ 2024-06-23 11045/week @ 2024-06-30 11359/week @ 2024-07-07 14130/week @ 2024-07-14 16981/week @ 2024-07-21 19741/week @ 2024-07-28 20035/week @ 2024-08-04 18214/week @ 2024-08-11

每月75,970次下载
用于 6 个crate(4个直接使用)

MIT 许可证

17KB
340 代码行

pyproject-toml-rs

GitHub Actions Crates.io docs.rs

pyproject.toml 解析器。

安装

将其添加到您的 Cargo.toml

[dependencies]
pyproject-toml = "0.8"

然后您就可以使用了。如果您使用的是Rust 2015,您还必须在crate根目录中添加 extern crate pyproject_toml

扩展解析

如果您想添加额外的字段解析,您可以使用 serdeflatten 功能并实现 Deref 特性,例如

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

许可证

此作品根据MIT许可证发布。许可证副本在 LICENSE 文件中提供。

依赖项

~6–8.5MB
~176K SLoC