Il framework pre-commit è un tool utilissimo per lo sviluppatore che permette di mantenere sempre il codice in linea con i vari standard di scrittura.
Nel caso del Python, si parla dello standard PEP8 che stabilisce le varie convenzioni nella scrittura e interpretazione del codice.
Lo scopo di questa guida è fornire al lettore tutti i passaggi per configurare nella maniera più semplice possibile il framework pre-commit sui propri repository locali, utilizzando il “correttore” black per la formattazione del codice.
Requisiti
Come punto di partenza è necessario avere:
- Repository locale git
- Python 3
- pip
- Terminale
Installazione
Ipotizziamo che il nostro repository si chiami WEEEOpen.
Apriamo il terminale (o powershell su Windows) e spostiamoci nella cartella del repository:
cd WEEEOpen
Installiamo pre-commit sul nostro sistema:
pip install pre-commit
Procediamo con l’installazione di pre-commit nel nostro repository col comando:
pre-commit install
Ora che l’installazione è terminata possiamo procedere con la configurazione.
Configurazione
Una volta terminata l’installazione, creiamo nella cartella del repository il file di configurazione di pre-commit:
touch .pre-commit-config.yaml
Apriamo questo file con un qualsiasi editor di testo e inseriamo la seguente configurazione:
repos:
- repo: https://github.com/psf/black
rev: 22.1.0
hooks:
- id: black
types:
- python
Il tag repos
indica l’insieme di tutti i repository dei tool che pre-commit dovrà utilizzare prima dei nostri commit.
In repo
inseriamo il link al repository di black, in rev
la versione che desideriamo (non è necessariamente quella in esempio) e negli hooks
specifichiamo tutti i parametri per l’esecuzione dello script black (in questo caso solo l’id e i tipi di file che deve controllare).
Ovviamente, oltre a black, è possibile inserire ulteriori hooks in base alle nostre esigenze.
Conclusione
Ora che il framework è configurato, possiamo procedere con la scrittura del nostro codice e, nel momento in cui l’utente effettuerà un nuovo commit, pre-commit eseguirà tutti gli script necessari per formattare il nostro codice secondo gli standard corretti.