为 llvmlite 贡献

llvmlite 的诞生是为了满足 Numba 项目的需求。它主要由 Numba 团队维护。我们倾向于优先考虑 Numba 的需求和限制,而不是其他相冲突的愿望。

我们欢迎以 错误报告拉取请求 形式的任何贡献。

沟通方式

论坛

llvmlite 使用 Numba Discourse 作为论坛,用于进行设计讨论和路线图规划等长期性主题。这里有各种类别可用,可以通过以下链接访问:numba.discourse.group。它还有一个 llvmlite 话题

错误报告

我们使用 GitHub 问题追踪器 来追踪错误报告和功能请求。如果您报告问题,请包含:

  • 您正在尝试做什么。

  • 您的操作系统。

  • 您正在运行的 llvmlite 版本。

  • 问题的描述——例如,完整的错误追踪信息或您得到的不预期结果。

  • 尽可能提供一个能够完全重现您问题的代码片段。

拉取请求

贡献代码

  1. Fork 我们的 GitHub 仓库

  2. 创建一个代表您工作的分支。

  3. 当您的工作准备就绪时,通过 GitHub 界面提交为拉取请求。

开发规则

编码规范

  • 所有 Python 代码应遵循 PEP 8

  • 所有 C++ 代码均使用 conda-forge conda 频道中可用的 clang-format-13 包的 clang-format-13 进行格式化。

  • 代码和文档通常应保持在 80 列以内,以便与所有现有工具(如代码审查用户界面)实现最大可读性。

此外,您可能希望设置 pre-commit 钩子,以便在进行 git 提交时自动运行 clang-format。这可以通过安装 pre-commit

pip install pre-commit

然后运行

pre-commit install

在 Numba 仓库的根目录。现在,每次您提交更改时都会运行 clang-format。您可以使用 git commit --no-verify 跳过此检查。

平台支持

Llvmlite 将保持与 Python 3.10 及更高版本兼容,至少支持 Windows、macOS 和 Linux。

我们不期望贡献者在所有平台上测试他们的代码。拉取请求会通过 Azure Pipelines 自动构建和测试,支持 Windows、OSX 和 Linux。

文档

这份 llvmlite 文档是使用 Sphinx 构建的,并维护在 llvmlite 仓库docs 目录中。

  1. 编辑 docs/source/ 下的源文件。

  2. 构建文档

    make html
    
  3. 检查文档

    open _build/html/index.html