Merci de votre intérêt pour contribuer au projet Dreame Vacuum !
- Python 3.13 ou supérieur (3.14 pour mypy, comme en CI)
- Git
- Home Assistant (pour les tests)
- Clonez le dépôt :
git clone https://github.com/foXaCe/dreame-vacuum.git
cd dreame-vacuum- Installez le runner de hooks prek (drop-in Rust de pre-commit) et activez-le :
pipx install prek # ou : uv tool install prek / brew install j178/prek/prek
prek install- Installez la stack de développement complète (tests + qualité + libs runtime) :
pip install -r requirements-dev.txt
requirements_test.txt(inclus) épinglepytest-homeassistant-custom-component, qui impose les versions Home Assistant compatibles ; les libs runtime restent volontairement non épinglées (Home Assistant décide).
Ruff est utilisé pour le linting et le formatage du code.
Vérifier le code :
ruff check custom_components/dreame_vacuumCorriger automatiquement :
ruff check custom_components/dreame_vacuum --fixFormater le code :
ruff format custom_components/dreame_vacuumLes hooks définis dans .pre-commit-config.yaml s'exécutent automatiquement à chaque commit, via prek — un drop-in Rust de pre-commit, ~10× plus rapide (même fichier de config). La version Python historique reste compatible (pipx install pre-commit) si vous préférez.
Exécuter manuellement :
prek run --all-filesLa CI applique cinq portes de qualité. Avant d'ouvrir une Pull Request, exécutez-les localement :
Tests unitaires (avec couverture) :
pytest tests/ --cov=custom_components/dreame_vacuum≈ 4 000 tests, ~30 s. La couverture doit rester ≥ 95 % — c'est un plancher qui ne fait que monter, jamais redescendre.
Lint :
ruff check custom_components/ tests/Formatage :
ruff format --check custom_components/ tests/Typage statique :
mypy custom_components/dreame_vacuumMode ratchet : seuls les modules listés explicitement dans pyproject.toml [tool.mypy] sont vérifiés strictement ; le reste du package est temporairement
ignoré. On étend cette liste au fil du nettoyage, on ne la réduit jamais.
Analyse de sécurité :
bandit -c pyproject.toml -r custom_components/- Longueur de ligne : 120 caractères
- Doubles quotes pour les chaînes
- Imports organisés automatiquement par ruff
- Fork le dépôt
- Créez une branche :
git checkout -b feature/ma-fonctionnalite - Committez :
git commit -m "feat: description" - Push :
git push origin feature/ma-fonctionnalite - Ouvrez une Pull Request
Les mises à jour de dépendances sont gérées automatiquement par Renovate
(et non Dependabot). Les PR sont ouvertes par @renovate[bot] ; le
dashboard Renovate liste
toutes les mises à jour en attente.
Le plancher python-miio>=0.5.12 du manifest est volontairement gelé : 0.5.12
(juillet 2022) est la dernière release stable publiée sur PyPI. L'upstream
GitHub reste actif mais ne release plus ; dreame/miio_patch.py porte le
contournement d'un fix upstream non publié. Ne tentez pas de bump cette
dépendance.
Merci ! 🎉