感謝你考慮為 Data Analysis with Chatbots 做出貢獻!
本專案遵循 Contributor Covenant 行為準則。參與本專案即表示你同意遵守此準則。
如果你發現 Bug,請在 GitHub Issues 中創建新的 issue:
- 使用清晰描述性的標題
- 詳細描述重現步驟
- 提供預期行為和實際行為
- 包含環境信息(OS、Python 版本等)
- 如果可能,提供最小可重現範例
我們歡迎新功能建議!請:
- 檢查是否已有類似建議
- 清楚說明功能用途和使用場景
- 提供範例代碼或使用案例
- 解釋為什麼此功能對其他用戶有用
- Fork 本倉庫
- 克隆你的 fork
- 創建新分支(
git checkout -b feature/amazing-feature) - 進行你的修改
- 提交你的更改
- 推送到分支
- 開啟 Pull Request
- 確保所有測試通過
- 更新相關文檔
- 遵循代碼風格指南
- 撰寫清晰的提交信息
- 在 PR 描述中引用相關 issue
git clone https://github.com/markl-a/Data-Analysis-with-Chatbots.git
cd Data-Analysis-with-Chatbotspython -m venv venv
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windows# 安裝開發依賴
pip install -e ".[dev]"
# 安裝 pre-commit hooks
pre-commit install# 運行所有測試
pytest
# 運行特定測試
pytest tests/test_clustering.py
# 生成覆蓋率報告
pytest --cov=src/data_analysis_chatbots --cov-report=html我們使用以下工具確保代碼質量:
# Black (代碼格式化)
black src/ tests/
# isort (導入排序)
isort src/ tests/# Flake8 (代碼檢查)
flake8 src/ tests/ --max-line-length=100
# MyPy (類型檢查)
mypy src/ --ignore-missing-imports
# Bandit (安全檢查)
bandit -r src/# 格式化代碼
make format
# 運行所有檢查
make lint
# 運行測試
make test
# 完整 CI 流程
make ci我們遵循 Conventional Commits 規範:
<類型>[可選範圍]: <描述>
[可選正文]
[可選頁腳]
feat: 新功能fix: Bug 修復docs: 文檔更新style: 代碼格式(不影響代碼運行)refactor: 重構(既不是新功能也不是修復)perf: 性能優化test: 添加或修改測試chore: 構建過程或輔助工具的變動
feat(clustering): add DBSCAN clustering algorithm
fix(rfm): correct recency calculation for edge cases
docs: update installation instructions
test(marketing): add tests for CLV predictor- 所有新代碼必須有相應測試
- 維持測試覆蓋率至少 60%
- 關鍵功能應達到 80%+ 覆蓋率
- 單元測試: 測試單個函數/方法
- 集成測試: 測試模塊間交互
- 端到端測試: 測試完整工作流
import pytest
from data_analysis_chatbots import YourClass
class TestYourClass:
@pytest.fixture
def sample_data(self):
return {"key": "value"}
def test_your_feature(self, sample_data):
result = YourClass().method(sample_data)
assert result == expected_value我們使用 Google 風格的 docstrings:
def function(arg1: int, arg2: str) -> bool:
"""函數的簡短描述。
更詳細的描述(如果需要)。
Args:
arg1: 參數1的描述
arg2: 參數2的描述
Returns:
返回值的描述
Raises:
ValueError: 錯誤情況的描述
Examples:
>>> function(1, "test")
True
"""
pass- 添加新功能時更新 README.md
- 更新相關的教程文檔
- 更新 API 文檔(Sphinx)
- 在 CHANGELOG.md 中記錄變更
我們遵循 Semantic Versioning:
MAJOR.MINOR.PATCH- MAJOR: 不兼容的 API 變更
- MINOR: 向後兼容的新功能
- PATCH: 向後兼容的 Bug 修復
- 更新版本號(
setup.py,pyproject.toml,__init__.py) - 更新
CHANGELOG.md - 創建 Git tag
- 推送到 GitHub
- 創建 GitHub Release
- 自動發布到 PyPI(GitHub Actions)
- 📧 創建 GitHub Issue
- 💬 參與 Discussions
- 📖 閱讀 文檔
感謝所有貢獻者!你們的努力讓這個專案變得更好。
再次感謝你的貢獻!🎉