🌍 Language / اللغة: English | العربية
We welcome contributions! Here's how you can help:
- Check the existing issues first
- Create a new issue with:
- A clear, descriptive title
- Steps to reproduce the bug
- Expected vs actual behavior
- Your environment (OS, Python version, snap7 version)
- Open an issue describing the feature you'd like
- Explain why it would be useful
- Include code examples if possible
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Write tests that verify your changes
- Run the test suite:
make test - Check code quality:
make check make mypy
- Commit with clear messages:
git commit -m "Add: description of change" - Push to your fork:
git push origin feature/my-feature - Submit a Pull Request
- Follow PEP 8 guidelines
- Use type annotations for all functions
- Maximum line length: 130 characters
- Run
ruff formatbefore committing - Add docstrings in Google style
# Run all tests
make test
# Run specific test
pytest tests/test_client.py
# Run with coverage
pytest --cov=snap7 tests/
# Type checking
make mypy
# Full quality check
make tox- Update docstrings when changing function signatures
- Update RST docs if adding new features
- Provide examples in both English and Arabic when possible
نرحب بمساهماتكم! إليك كيف يمكنك المساعدة:
- تحقق من المشاكل المفتوحة أولاً
- أنشئ مشكلة جديدة مع:
- عنوان واضح ووصفي
- خطوات إعادة إنتاج الخطأ
- السلوك المتوقع مقابل الفعلي
- بيئتك (نظام التشغيل، إصدار بايثون، إصدار snap7)
- افتح مشكلة تصف الميزة التي تريدها
- اشرح لماذا ستكون مفيدة
- أضف أمثلة كود إن أمكن
- انسخ المستودع (Fork)
- أنشئ فرع ميزة:
git checkout -b feature/my-feature - اكتب اختبارات تتحقق من تغييراتك
- شغّل مجموعة الاختبارات:
make test - تحقق من جودة الكود:
make check make mypy
- سجّل التغييرات برسائل واضحة:
git commit -m "إضافة: وصف التغيير" - ادفع إلى نسختك:
git push origin feature/my-feature - قدّم طلب سحب (Pull Request)
- اتبع إرشادات PEP 8
- استخدم التعليقات التوضيحية للأنواع (type annotations) لجميع الدوال
- الطول الأقصى للسطر: 130 حرفاً
- شغّل
ruff formatقبل تسجيل التغييرات - أضف docstrings بأسلوب Google
# تشغيل جميع الاختبارات
make test
# تشغيل اختبار محدد
pytest tests/test_client.py
# تشغيل مع تقرير التغطية
pytest --cov=snap7 tests/
# فحص الأنواع
make mypy
# فحص الجودة الكامل
make tox- حدّث docstrings عند تغيير توقيعات الدوال
- حدّث ملفات RST عند إضافة ميزات جديدة
- قدّم أمثلة بالعربية والإنجليزية عند الإمكان