DreamPie: La shell python che hai sempre sognato

Alcune settimane fa ho scritto un post sull’eterna lotta tra gli ambienti di sviluppo integrati ed i semplici editor di testo. Oltre che per raccontare la mia personale esperienza il post è stato scritto per estorcere dai lettori dritte e consigli.

A quanto pare l’iniziativa è stata utile almeno per me. Grazie ad un commento del nostro Cesare Di Mauro sono venuto a conoscenza di DreamPie, quella che gli stessi sviluppatori definiscono come da titolo dell’articolo:

“The Python shell you’ve always dreamed about”.

Solitamente sono una persona che tende a diffidare dei proclami degli sviluppatori avendo vissuto sulla mia pelle come spesso tendano a ingigantire le qualità di qualcosa su cui hanno investito tempo e passione. Troppe volte sono andato a scaricare “l’editor definitivo” o “il messia dei player video” per ritrovarmi tra le mani software assolutamente inadatti alle mie esigenze.

Anche a me in passato è capitato di scrivere qualcosa che credevo fosse assolutamente il massimo per poi scontrarmi con la dura realtà: era il massimo solo per l’uso che ne facevo io (e dopo un paio di giorni di nemmeno per quello).

Con una buona dose di speranza, ma quel filo di scetticismo che serve sempre a non rimanere troppo delusi, mi sono lanciato sul sito del progetto e ho scaricato il pacchetto deb. Dopo pochi secondi necessari all’installazione mi sono trovato di fronte all’interfaccia del programma.


Ecco come si presenta DreamPie al primo avvio

Al primo avvio si è presentata anche l’unica cosa che mi ha fatto storcere il naso: la scelta di fornire una shell a sfondo nero (per programmare ho sempre preferito “mettere le classi nero su bianco”).

Il disappunto è rientrato praticamente subito visto che tra le opzioni ho subito trovato una tab dedicata allo schema dei colori. Il programma offre la possibilità di cambiarlo a piacimento ed offre un preset “chiaro” e uno “scuro”.

I colori di sfondo e dell’evidenziazione della sintassi possono essere addirittura assegnati singolarmente ed è possibile salvare lo schema ottenuto. Questa feature farà sicuramente felici quelli che mi piace chiamare “personalizzatori compulsivi”.


Finestra di configurazione dei colori

Compiuto questo primo passo ho iniziato ad esplorare la finestra principale. Il programma è estremamente semplice e si compone di una finestra divisa in due verticalmente. Nella parte superiore viene presentata la cronologia dei comandi interpretati dalla shell python e il rispettivo output. La parte inferiore è dedicata all’editing del codice.

Come in ogni shell interattiva che si rispetti scrivendo una semplice istruzione e premendo invio questa sarà interpretata al volo. Il comando e il corrispondente output verrà quindi mostrato nell’area superiore. Se poi vogliamo scrivere un blocco di istruzioni senza passare per l’interprete, basterà mettere uno spazio al termine della prima riga in modo da rimanere nella fase di editing.

In generale per eseguire un pezzo di codice in qualsiasi momento basta utilizzare la combinazione di tasti Ctrl+Invio.

La caratteristica centrale dell’editor è il potente meccanismo di auto-completamento.

DreamPie esalta i vantaggi del linguaggio dinamico interpretato presentando un auto-completamento che suggerisce direttamente metodi e attributi dell’oggetto ispezionato a runtime.

Il programma inoltre è in grado di mostrare la documentazione dei vari moduli, funzioni, classi e metodi se opportunamente commentati seguendo le semplici regole per la generazione automatica delle docstring.


Auto-completamento in azione

Rimanendo alla fase di stesura del codice DreamPie fornisce una modalità di composizione dei path con completamento automatico. Quando si lavora sui file capita spesso di far riferimento a percorsi assoluti o relativi e la possibilità di scriverli in maniera rapida ed interattiva è senza dubbio una feature gradita.

La cronologia delle istruzioni impartite oltre ad essere presentata nella zona superiore viene anche conservata in memoria. Con le combinazioni Ctrl+freccia_su e Ctrl+freccia_giu è possibile scorrere la cronologia all’interno della zona dedicata all’editing per riprendere con rapidità pezzi di codice scritti in precedenza.

La history completa dei tentativi fatti può essere esportata in html e reimportata successivamente in DreamPie. Chi programma sa quanto è utile tenere traccia dei vari tentativi fatti per la risoluzione di un particolare problema.


La comoda funzione “Copy code only”

Una caratteristica che non avevo mai visto in nessun altra shell interattiva è la modalita “Copy code only”. In pratica è possibile copiare blocco di codice dalla zona superiore senza preoccuparsi di non includere l’output o gli errori dell’interprete che verranno automaticamente rimossi.


Raggruppamento automatico per output molto lunghi

Altra piccola ma utile caratteristica è il raggruppamento automatico degli output molto lunghi. Per evitare di intasare lo schermo, se l’output di una certa funzione andrà ad occupare molte righe, questo verrà automaticamente raggruppato lasciando la possibilità di espanderlo in caso di necessità.

Degna di menzione è anche la natura multipiattaforma e multi-interprete del programma. DreamPie rilasciato sotto licenza GPLv3 è disponibile per GNU/Linux, Windows e MacOSX e può essere utilizzato con CPython, Iron Python e Jython.

L’unico miglioramento che mi è venuto in mente per il programma dopo due settimane di utilizzo riguarda il layout della finestra principale.
Lavorando con un portatile widescreen avrei gradito la possibilità di affiancare orizzontalmente editor e visualizzatore della cronologia.

Data la natura aperta del programma, in un periodo di tregua universitaria, mi piacerebbe cimentarmi nell’implementazione della cosa. Sarebbe anche un’occasione per conoscere meglio le librerie grafiche gtk utilizzate per il progetto.

Chiudendo mi sento di consigliare assolutamente a tutti questo utilissimo strumento e di ringraziare ancora una volta Cesare per avermelo fatto scoprire.

Press ESC to close