# Contribuire a LLM Monitor Grazie per l'interesse nel contribuire a LLM Monitor! Questo documento fornisce linee guida per contribuire al progetto. ## Autore e Diritti - **Autore del progetto**: Luca Sacchi Ricciardi - **Detentore di tutti i diritti**: Luca Sacchi Ricciardi ## Codice di Condotta Questo progetto aderisce a un Codice di Condotta per garantire un ambiente inclusivo e rispettoso. ## Come Contribuire ### Segnalare Bug - **Verificare prima** se il bug non è già stato segnalato - **Includere dettagli**: sistema operativo, versione Python, stack trace - **Fornire un esempio ripetibile** se possibile ### Suggerire Miglioramenti - **Verificare prima** se il suggerimento non è già stato fatto - **Spiegare chiaramente** il caso d'uso e i benefici - **Fornire esempi** di come dovrebbe funzionare ### Pull Requests 1. **Fork il repository** 2. **Crea un branch**: `git checkout -b feature/my-feature` 3. **Installa le dipendenze di sviluppo**: ```bash pip install -r requirements-dev.txt ``` 4. **Effettua i tuoi cambiamenti** seguendo lo [Style Guide](#style-guide) 5. **Scrivi i test**: I test sono obbligatori per nuove funzionalità 6. **Esegui i test**: `make test` 7. **Formatta il codice**: `make format` 8. **Esegui il linting**: `make lint` 9. **Fai il commit**: `git commit -m "feat: descrizione della feature"` 10. **Push**: `git push origin feature/my-feature` 11. **Apri una PR** descrivendo i cambiamenti ## Style Guide ### Python - Usa **Black** per la formattazione: `make format` - Usa **isort** per l'organizzazione degli import - Segui **PEP 8** - Usa type hints per le funzioni nuove - Documenta con docstring (formato Google): ```python def my_function(param1: str, param2: int) -> bool: """ Descrizione breve della funzione. Args: param1: Descrizione del primo parametro param2: Descrizione del secondo parametro Returns: Descrizione del valore ritornato Raises: ValueError: Quando succede """ pass ``` ### Commit Messages Usa il formato Conventional Commits: - `feat: aggiungi nuova feature` - `fix: correggi un bug` - `docs: aggiorna documentazione` - `style: formattazione, without semantic change` - `refactor: ristruttura codice` - `perf: migliora le performance` - `test: aggiungi o modifica test` - `chore: aggiorna dipendenze, etc` Esempio: ``` feat: aggiungi endpoint per ottenere statistiche modelli - Nuovo endpoint GET /api/v1/models/stats - Ritorna conteggio, spazio totale e ultimi aggiornamenti - Include test di integrazione ``` ### Codice - Mantieni le funzioni piccole e ben definite - Usa nomi descrittivi - Aggiungi commenti per la logica complessa - Evita magic numbers, usa costanti ## Testing - Tutti i PR devono includere test per nuove funzionalità - La copertura del codice deve rimanere ≥ 80% - Esegui i test prima di submitare: ```bash make test ``` ## Documentazione - Aggiorna il README se cambi il comportamento - Aggiungi docstring a nuove funzioni - Aggiorna il CHANGELOG.md ## Processo di Review - I PR saranno reviewati il prima possibile - I feedback saranno forniti in buona fede - Le discussioni devono essere costruttive ## Licenza Contribuendo, accetti che i tuoi contributi siano soggetti alla licenza proprietaria del progetto (tutti i diritti riservati). --- Domande? Apri un issue o contatta il maintainer: - luca.sacchi@gmail.com - luca@lucasacchi.net