跳转至

贡献指南

感谢您对Symphra Excel的关注!我们欢迎所有形式的贡献。

贡献方式

您可以通过以下方式为项目做出贡献:

  • 🐛 报告Bug - 发现问题并报告
  • 💡 提出建议 - 分享您的想法和需求
  • 📝 改进文档 - 修正错误或补充内容
  • 💻 贡献代码 - 修复Bug或添加新功能
  • 🌍 翻译 - 帮助翻译文档
  • 推广 - 向他人推荐项目

开始之前

环境准备

  1. Fork项目

访问 https://github.com/getaix/symphra-excel 并点击Fork。

  1. 克隆仓库
git clone https://github.com/YOUR_USERNAME/symphra-excel.git
cd symphra-excel
  1. 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/macOS
# 或
venv\Scripts\activate  # Windows
  1. 安装依赖
pip install -e ".[dev]"
  1. 验证安装
pytest

报告问题

报告Bug

在提交Bug报告前,请:

  1. 搜索现有Issues确认问题未被报告
  2. 使用最新版本重现问题
  3. 收集必要的信息

Bug报告模板:

## Bug描述
[简短描述问题]

## 复现步骤
1. 步骤1
2. 步骤2
3. ...

## 期望行为
[描述您期望的行为]

## 实际行为
[描述实际发生的情况]

## 环境信息
- Python版本: 3.11
- Symphra Excel版本: 0.1.0
- 操作系统: macOS 14.0

## 复现代码
```python
from symphra_excel import Workbook
# 您的代码
\```

## 错误信息
\```
完整的错误堆栈
\```
\```

### 功能请求

**功能请求模板**:

```markdown
## 功能描述
[描述您想要的功能]

## 使用场景
[说明为什么需要这个功能]

## 期望的API
```python
# 示例代码展示您期望的用法
\```

## 替代方案
[是否有其他解决方案]
\```

## 贡献代码

### 工作流程

1. **创建分支**

```bash
git checkout -b feature/my-feature
# 或
git checkout -b fix/my-bugfix
  1. 进行修改

  2. 编写代码

  3. 添加测试
  4. 更新文档

  5. 运行测试

# 运行所有测试
pytest

# 运行特定测试
pytest tests/test_workbook.py

# 检查覆盖率
pytest --cov=symphra_excel --cov-report=html
  1. 代码检查
# 格式化代码
black symphra_excel tests

# 排序导入
isort symphra_excel tests

# 代码检查
flake8 symphra_excel tests

# 类型检查
mypy symphra_excel
  1. 提交更改
git add .
git commit -m "feat: add new feature"
# 或
git commit -m "fix: fix bug"
  1. 推送分支
git push origin feature/my-feature
  1. 创建Pull Request

访问GitHub并创建Pull Request。

提交规范

我们使用Conventional Commits规范:

<type>(<scope>): <subject>

<body>

<footer>

Type类型:

  • feat: 新功能
  • fix: Bug修复
  • docs: 文档更新
  • style: 代码格式(不影响代码运行)
  • refactor: 重构
  • test: 测试相关
  • chore: 构建/工具相关

示例:

feat(styles): add gradient fill support

Add support for gradient fill in cell styles.
This includes linear and radial gradients.

Closes #123

代码规范

代码风格

  • 使用Black格式化代码(88字符行宽)
  • 使用isort排序导入
  • 遵循PEP 8规范
  • 使用有意义的变量名

类型注解

所有公开API必须有类型注解:

def set_cell_value(self, cell_ref: str, value: Any) -> None:
    """设置单元格值。

    Args:
        cell_ref: 单元格引用,如"A1"
        value: 单元格值
    """
    ...

文档字符串

使用Google风格的文档字符串:

def create_worksheet(self, title: str = "Sheet") -> Worksheet:
    """创建新工作表。

    Args:
        title: 工作表名称。默认为"Sheet"。

    Returns:
        新创建的工作表对象。

    Raises:
        ValueError: 如果工作表名称已存在。

    Example:
        ```python
        sheet = wb.create_worksheet("数据")
        ```
    """
    ...

测试规范

编写测试

每个新功能都应该有对应的测试:

import pytest
from symphra_excel import Workbook

def test_create_worksheet():
    """测试创建工作表。"""
    wb = Workbook()
    sheet = wb.create_worksheet("测试")

    assert sheet is not None
    assert sheet.title == "测试"
    assert "测试" in wb.worksheet_names

def test_create_duplicate_worksheet():
    """测试创建重名工作表应抛出异常。"""
    wb = Workbook()
    wb.create_worksheet("测试")

    with pytest.raises(ValueError):
        wb.create_worksheet("测试")

测试覆盖率

  • 新代码的测试覆盖率应≥80%
  • 关键路径应达到90%+覆盖率
  • 使用pytest --cov检查覆盖率

测试标记

使用pytest标记组织测试:

@pytest.mark.slow
def test_large_file():
    """测试大文件处理。"""
    ...

@pytest.mark.integration
def test_end_to_end():
    """端到端集成测试。"""
    ...

Pull Request规范

PR标题:

feat: add chart support
fix: correct style cloning issue

PR描述模板:

## 变更说明
[简要描述变更内容]

## 变更类型
- [ ] Bug修复
- [ ] 新功能
- [ ] 文档更新
- [ ] 性能优化
- [ ] 重构

## 测试
- [ ] 添加了测试用例
- [ ] 所有测试通过
- [ ] 测试覆盖率≥80%

## 检查清单
- [ ] 代码通过Black格式化
- [ ] 代码通过isort排序
- [ ] 代码通过flake8检查
- [ ] 代码通过mypy类型检查
- [ ] 添加了文档字符串
- [ ] 更新了相关文档

## 关联Issue
Closes #123

## 截图/示例
[如果适用,添加截图或代码示例]
\```

## 文档贡献

### 文档结构

文档位于`docs/`目录:
docs/ ├── index.md # 首页 ├── getting-started/ # 快速开始 ├── guide/ # 用户指南 ├── api/ # API参考 ├── examples/ # 示例 ├── best-practices/ # 最佳实践 └── about/ # 关于
### 编写文档

1. **使用Markdown格式**
2. **包含代码示例**
3. **添加适当的标题层级**
4. **使用清晰的语言**

### 预览文档

```bash
# 安装文档依赖
pip install -e ".[docs]"

# 本地预览
mkdocs serve

# 访问 http://127.0.0.1:8000

发布流程

(仅限维护者)

  1. 更新版本号
  2. 更新CHANGELOG
  3. 创建Git标签
  4. 构建分发包
  5. 上传到PyPI

行为准则

我们的承诺

我们致力于为每个人提供友好、安全和包容的环境。

我们的标准

正面行为:

  • 使用友好和包容的语言
  • 尊重不同的观点和经验
  • 优雅地接受建设性批评
  • 关注对社区最有利的事情
  • 对其他社区成员表示同理心

不可接受的行为:

  • 使用性化的语言或图像
  • 侮辱/贬损性评论和人身攻击
  • 公开或私下骚扰
  • 未经许可发布他人私人信息
  • 其他不道德或不专业的行为

执行

违反行为准则可能导致:

  1. 警告
  2. 临时禁止
  3. 永久禁止

获取帮助

如有任何问题:

  • 📖 阅读文档
  • ❓ 查看FAQ
  • 💬 在GitHub Discussions提问
  • 📧 发送邮件到develop@getaix.tech

致谢

感谢每一位贡献者!您的帮助让Symphra Excel变得更好。

查看所有贡献者:https://github.com/getaix/symphra-excel/graphs/contributors


再次感谢您的贡献!🎉