Skip to content

Latest commit

 

History

History
140 lines (106 loc) · 3.44 KB

File metadata and controls

140 lines (106 loc) · 3.44 KB

نحوه مشارکت در پروژه

ممنون از اینکه می‌خواید در این پروژه مشارکت کنید! 🎉

فرآیند مشارکت

1. Fork کردن پروژه

  • روی دکمه Fork در GitHub کلیک کنید
  • پروژه را به اکانت خودتون کلون کنید

2. ایجاد Branch جدید

git checkout -b feature/amazing-feature
# یا
git checkout -b fix/bug-fix

3. انجام تغییرات

  • کد تمیز و خوانا بنویسید
  • از استانداردهای Python (PEP 8) پیروی کنید
  • کامنت‌های مناسب اضافه کنید
  • تست‌های مورد نیاز را بنویسید

4. تست تغییرات

# اجرای تست‌ها
make test

# بررسی کد استایل
make lint

# فرمت کردن کد
make format

5. Commit کردن تغییرات

git add .
git commit -m "Add: توضیح تغییرات به فارسی یا انگلیسی"

نوع Commit ها:

  • Add: برای افزودن feature جدید
  • Fix: برای رفع باگ
  • Update: برای به‌روزرسانی
  • Remove: برای حذف
  • Refactor: برای بازنویسی کد
  • Docs: برای تغییرات مستندات

6. Push کردن

git push origin feature/amazing-feature

7. ایجاد Pull Request

  • به GitHub برگردید
  • روی "Compare & pull request" کلیک کنید
  • توضیحات کامل از تغییرات را بنویسید
  • منتظر بررسی بمانید

استانداردهای کد

Python Style Guide

  • از PEP 8 پیروی کنید
  • Maximum line length: 100 characters
  • از type hints استفاده کنید
  • docstrings برای توابع و کلاس‌ها بنویسید

مثال:

def my_function(param1: str, param2: int) -> bool:
    """
    توضیحات تابع
    
    Args:
        param1: توضیح پارامتر اول
        param2: توضیح پارامتر دوم
    
    Returns:
        توضیح خروجی
    """
    return True

تست‌ها

نوشتن تست

  • برای هر feature جدید، تست بنویسید
  • تست‌های موجود را بررسی کنید
  • Coverage را حفظ کنید
def test_my_feature():
    """Test my amazing feature"""
    result = my_function("test", 42)
    assert result is True

اجرای تست‌ها

# تمام تست‌ها
pytest tests/

# با coverage
pytest tests/ --cov=app

# یک فایل خاص
pytest tests/test_api.py

مستندات

  • مستندات را به‌روز نگه دارید
  • اگر API جدید اضافه می‌کنید، در README توضیح دهید
  • docstrings و کامنت‌ها را فراموش نکنید

مسائل و سوالات

  • برای باگ‌ها، Issue باز کنید
  • قبل از باز کردن Issue، جستجو کنید
  • اطلاعات کامل و مثال ارائه دهید

Code Review

  • صبور باشید، ممکن است زمان ببرد
  • به feedback ها پاسخ دهید
  • تغییرات درخواستی را اعمال کنید

ممنوعیت‌ها

❌ کد تست نشده push نکنید ❌ کد بدون docstring ننویسید ❌ به main branch مستقیماً push نکنید ❌ sensitive data (API keys, passwords) را commit نکنید

تشکر

ممنون از مشارکت شما! 🙏

اگر سوالی دارید، در Issues بپرسید.