本文档概述了向 TheAlgorithms/Python 仓库贡献算法、数据结构和教育代码的全面指南。它涵盖了贡献者的责任、代码质量标准、测试要求和提交流程,以确保一致、高质量的教育内容。
有关具体的算法实现标准,请参阅算法实现标准。有关测试和验证程序,请参阅测试与验证要求。
所有贡献者在提交代码之前必须同意基本原则。本仓库服务于全球学习者,并保持严格的教育内容质量标准。
| 职责 | 要求 | 强制执行 |
|---|---|---|
| 原创作品 | 禁止抄袭 | 自动化检测 + 人工审查 |
| 许可 | 代码根据 MIT 许可证分发 | 合并后自动生效 |
| 质量标准 | 必须符合样式和编码标准 | 提交前钩子 + CI/CD 验证 |
| 教育价值 | 代码必须用于学习目的 | 人工审查流程 |
贡献者承认其作品将成为全球引用的教育资源的一部分。欢迎新的实现,但不允许与现有算法完全重复。
贡献工作流程概述
来源:CONTRIBUTING.md1-192 .github/stale.yml1-64
本仓库定义了具有特定标准的算法,以保持教育价值和跨实现的连贯性。
算法实现必须满足以下要求
本仓库通过自动化工具强制执行特定的编码标准
| 工具 | 目的 | 命令 | 配置 |
|---|---|---|---|
| pre-commit | 提交时自动格式化 | pre-commit install | .pre-commit-config.yaml |
| black | 代码格式化 | black . | Python 软件基金会标准 |
| ruff | 代码检查和质量 | ruff check | 快速 Python 代码检查器 |
| mypy | 类型检查 | mypy --ignore-missing-imports . | 静态类型分析 |
来源:CONTRIBUTING.md43-61 CONTRIBUTING.md63-75 CONTRIBUTING.md76-101 CONTRIBUTING.md162-169
所有代码必须使用 Python 3.13+ 编写,并遵循既定的命名约定。
每个函数都需要全面的文档和测试
doctest 格式是强制性的,并具有双重目的
来源:CONTRIBUTING.md80-85 CONTRIBUTING.md118-140 CONTRIBUTING.md162-169
本仓库在外部依赖项方面有特定的政策
| 依赖类型 | 策略 | 需要采取的行动 |
|---|---|---|
| 基本算法 | 避免使用外部库 | 使用 Python 标准库 |
| 复杂算法 | 允许使用外部库 | 添加到 requirements.txt |
| 第三方模块 | 必须有正当理由 | 包含在提交中 |
来源:CONTRIBUTING.md173-175 CONTRIBUTING.md176-190
由于其数学性质和自动化验证系统,Project Euler 解决方案具有额外的要求。
仓库包含示例,例如project_euler/problem_012/sol2.py46-53,演示了正确的结构
主要特性
solution()来源:project_euler/README.md11-119 project_euler/problem_012/sol2.py1-58
贡献流程集成了多个自动化系统,以确保代码质量和正确性。
本仓库使用自动化的问题管理来维护活跃的贡献环境
| 配置 | 值 | 目的 |
|---|---|---|
| 多少天后变为过时 | 30 天 | 标记不活跃的问题/PR |
| 多少天后关闭 | 7 天 | 关闭过时项 |
| 豁免标签 | "Status: on hold" | 防止自动关闭 |
| 每小时操作数 | 5 | 限流 |
来源:CONTRIBUTING.md26-39 .github/stale.yml1-64
本仓库通过多种渠道维护活跃的社区支持
| 平台 | 目的 | 用途 |
|---|---|---|
| GitHub Issues | Bug 报告、功能请求 | 技术讨论 |
| Discord | 实时社区聊天 | 快速提问、协作 |
| Gitter | 算法讨论 | 教育支持 |
Fixes #issue_number贡献系统强调实际实现而非理论讨论,鼓励贡献者提交可运行的代码,而不是在问题中讨论潜在的算法。