Guida allo sviluppo del codice#
Codice di stile#
Scrivere buon codice non dipende solo da ciò che scrivi, ma anche da come lo scrivi. Durante i test di integrazione continua, diversi strumenti controlleranno il tuo codice per eventuali errori di stile. Un buon stile di programmazione è uno dei requisiti per inviare codice a Xinference.
Inoltre, non apportare modifiche improvvise al codice, che potrebbero causare problemi a una grande quantità di codice utente. Quindi, dobbiamo mantenere la retrocompatibilità il più possibile per evitare guasti su larga scala.
Correzione automatica degli errori di formato#
Inoltre, l’integrazione continua eseguirà strumenti di controllo della formattazione del codice come black, flake8, isort utilizzando pre-commit hooks. Qualsiasi avviso generato da questi controlli causerà il fallimento dell’integrazione continua. Pertanto, si consiglia di eseguire questi controlli prima di inviare il codice. È possibile installare pre-commit nella directory principale del repository Xinference per farlo:
pip install pre-commit
Successivamente esegui il comando:
pre-commit install
Una volta installato, garantisce che ogni volta che si effettua un commit delle modifiche, tutti i controlli di stile vengano eseguiti automaticamente, senza doverli eseguire manualmente uno per uno. Inoltre, l’uso di pre-commit rende più facile mantenere la sincronizzazione quando i nostri controlli del codice subiscono modifiche.
Nota: se necessario, è possibile saltare questi controlli utilizzando il comando git commit --no-verify.
Se non si desidera includere pre-commit come parte del flusso di lavoro, è comunque possibile eseguire il seguente comando per effettuare controlli con esso:
pre-commit run --files <files you have modified>
Senza bisogno di eseguire prima pre-commit install.
Se desideri eseguire il controllo su tutti i file recentemente sottoposti, puoi utilizzare il seguente comando:
pre-commit run --from-ref=upstream/main --to-ref=HEAD --all-files
Senza bisogno di eseguire prima pre-commit install.
Nota
Puoi considerare di eseguire periodicamente il comando pre-commit gc per pulire i repository non più utilizzati.
Nota
Se sono installate versioni in conflitto di virtualenv, potrebbero verificarsi errori - fare riferimento a questo link .
Inoltre, a causa di un bug in virtualenv, potresti riscontrare problemi se usi conda. Per risolvere questo problema, puoi effettuare il downgrade di virtualenv alla versione 20.0.33.
Retrocompatibilità#
Si prega di mantenere la massima compatibilità con le versioni precedenti. Se si ritiene necessario apportare modifiche, spiegare chiaramente il motivo nella richiesta pull. Inoltre, fare attenzione quando si modificano le firme dei metodi e aggiungere avvisi di deprecazione quando necessario. Aggiungere inoltre direttive sphinx per le funzioni o i metodi deprecati.
Inoltre, hai bisogno di
Scrivi un nuovo test case che emetta un avviso quando si chiama un parametro deprecato.
Aggiorna tutti i casi di test e il codice esistenti di Xinference per utilizzare i nuovi parametri.
Suggerimenti di tipo#
Xinference incoraggia fortemente l’uso di suggerimenti sui tipi in stile PEP 484. Il nuovo sviluppo dovrebbe includere suggerimenti sui tipi, e le richieste pull che annotano il codice esistente sono ben accette!
Test-driven development#
Xinference attribuisce grande importanza ai test e incoraggia vivamente i contributori ad adottare lo sviluppo guidato dai test (TDD). Questo processo di sviluppo «si basa sulla ripetizione di cicli di sviluppo molto brevi: prima, lo sviluppatore scrive un test automatico (inizialmente fallito) per definire il miglioramento o la nuova funzionalità desiderata, poi utilizza il codice minimo necessario per superare il test.» Pertanto, prima di scrivere effettivamente qualsiasi codice, dovresti creare il tuo caso di test. Di solito, i casi di test possono essere ricavati dall’issue originale di GitHub. Tuttavia, vale la pena considerare situazioni aggiuntive e scrivere i relativi casi di test.
Dopo aver inviato il codice a Xinference, viene spesso richiesto di aggiungere esempi di test. Pertanto, è molto importante sviluppare l’abitudine di scrivere esempi di test in anticipo, in modo da evitare problemi.