Migliora il tuo stile di codifica Python con Ruff

Migliora il tuo stile di programmazione Python con Ruff

 

Che cos’è Ruff

 

Ruff è uno strumento estremamente veloce di linting e formattazione di Python scritto in Rust che mira a sostituire e migliorare gli strumenti esistenti come Flake8, Black e isort. Fornisce prestazioni fino a 10-100 volte più veloci mantenendo la parità attraverso oltre 700 regole integrate e la reimplementazione di plugin popolari. 

  

Ruff supporta il Python moderno con compatibilità 3.12 e `pyproject.toml`. Offre anche il supporto per la correzione automatica, la memorizzazione nella cache e l’integrazione con l’editor. Ruff è amico dei monorepo ed è utilizzato in importanti progetti open source come Pandas, FastAPI e altri. Unendo velocità, funzionalità e facilità d’uso, Ruff integra il linting, la formattazione e la correzione automatica in uno strumento unificato che è molto più veloce delle alternative esistenti.

 

Iniziare con Ruff

 

Possiamo installare facilmente `ruff` utilizzando PIP.  

pip install ruff

 

Per testare quanto sia facile e veloce eseguire Ruff, possiamo utilizzare il repository DagHub kingabzpro/Yoga-Pose-Classification. Puoi clonarlo o utilizzare il tuo progetto per la formattazione.  

Prima di tutto, eseguiremo un linter sul nostro progetto. Puoi eseguire il linter anche su un singolo file sostituendo “.” con la posizione del file. 

ruff check .

 

 

Ruff ha identificato 9 errori e 1 errore correggibile. Per correggere l’errore, utilizzeremo l’opzione –fix.

ruff check --fix .

 

Come puoi vedere, ha corretto l’errore correggibile.   Per formattare il progetto, utilizzeremo il comando `ruff format`.

$ ruff format .>>> 3 file riformattati

 

Il linter e il formatter di Ruff hanno apportato numerosi cambiamenti al codice. Ma perché abbiamo bisogno di questi strumenti? La risposta è semplice: sono utili per imporre standard e convenzioni di codifica. Di conseguenza, sia tu che il tuo team potrete concentrarvi sugli aspetti significativi del vostro codice. Inoltre, contribuiscono a migliorare la qualità, la manutenibilità e la sicurezza del nostro codice.

 

 

Linting e Formattazione di Jupyter Notebooks

 

Per utilizzare Ruff per i Jupyter Notebook nel progetto, devi creare il file `ruff.toml` e aggiungere il seguente codice:

extend-include = ["*.ipynb"]

 

Puoi fare lo stesso anche con il file `pyproject.toml`. 

In seguito, esegui nuovamente i comandi per vedere le modifiche apportate ai file del Jupyter notebook. 

Sono stati riformattati 2 file e abbiamo 2 file di notebook. 

$ ruff format .>>> 2 file riformattati, 3 file non modificati

 

Inoltre, abbiamo risolto i problemi di quei file eseguendo nuovamente il comando `check`. 

$ ruff check --fix .>>> Trovati 51 errori (6 risolti, 45 rimanenti).

 

Il risultato finale è sorprendente. Ha apportato tutte le modifiche necessarie senza rompere il codice. 

 

 

Configurazioni di Ruff

 

È facile configurare Ruff per Jupyter Notebooks modificando il file `ruff.toml` per regolare le impostazioni del linter e del formatter. Consulta la documentazione sulla configurazione di Ruff per ulteriori dettagli. 

target-version = "py311"extend-include = ["*.ipynb"]line-length = 80[lint]extend-select = [  "UP",  # pyupgrade  "D",   # pydocstyle][lint.pydocstyle]convention = "google"

 

GitHub Action &  Pre-commit Hook

 

Gli sviluppatori e i team possono utilizzare Ruff come pre-commit hook tramite `ruff-pre-commit`:

- repo: https://github.com/astral-sh/ruff-pre-commit  # Versione di Ruff.  rev: v0.1.5  hooks:    # Esegui il linter.    - id: ruff      args: [ --fix ]    # Esegui il formatter.    - id: ruff-format

 

Può anche essere utilizzato come GitHub Action tramite `ruff-action`:

name: Ruffon: [ push, pull_request ]jobs:  ruff:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v3      - uses: chartboost/ruff-action@v1

 

Estensione Ruff per VSCode

 

Il lato più piacevole di Ruff è la sua estensione per VSCode. Semplifica la formattazione e il linting, eliminando la necessità di estensioni di terze parti. Cerca semplicemente Ruff sul marketplace delle estensioni per installarlo.

 Immagine tratta da Ruff – Visual Studio Marketplace 

Ho configurato `setting.json` in modo che formatti al salvataggio.

 

Conclusioni

 

Ruff offre un linting e una formattazione estremamente veloci per un codice Python più pulito e coerente. Con oltre 700 regole integrate reimplementate in Rust per migliorare le prestazioni, Ruff trae ispirazione da strumenti popolari come Flake8, isort e pyupgrade per applicare un insieme completo di migliori pratiche di codifica. L’insieme di regole selezionate si concentra nel rilevare bug e problemi critici di stile senza picchettare eccessivamente.

L’integrazione senza soluzione di continuità con i pre-commit hook, le azioni di GitHub e gli editor come VSCode rende facile l’incorporazione di Ruff nei flussi di lavoro Python moderni. La velocità senza precedenti e l’insieme di regole progettato con cura rendono Ruff uno strumento essenziale per gli sviluppatori Python che apprezzano un feedback rapido, codice pulito e una collaborazione di squadra fluida. Ruff stabilisce un nuovo standard per il linting e la formattazione di Python combinando funzionalità robuste con prestazioni strabilianti.  

****[Abid Ali Awan](https://www.polywork.com/kingabzpro)**** (@1abidaliawan) è un professionista certificato di data science che ama creare modelli di machine learning. Attualmente, si sta concentrando sulla creazione di contenuti e sulla scrittura di blog tecnici su tecnologie di machine learning e data science. Abid è in possesso di una laurea magistrale in Technology Management e una laurea triennale in Ingegneria delle Telecomunicazioni. La sua visione è quella di creare un prodotto AI utilizzando un grafo di reti neurali per gli studenti che lottano con problemi mentali.