[Python] Nomi delle costanti modulo 'string'

2015-09-02 Per discussione Davide Brunato
Ciao a tutti,

Volevo chiedere se qualcuno sa perché le costanti del modulo string (es.
string.digits) hanno tutti nomi in lowercase diversamente da quanto
previsto dalla convenzione PEP8.

Mi interessa perché stavo preparando un corso di Python, per colleghi
sistemisti e studenti, volendo spiegare anche la scelta di Python di
basarsi su convenzioni invece che su statement espliciti.

Ciao e grazie

Davide

-- 
_
Davide Brunato

SISSA - International School for Advanced Studies
Information Technology and Computing Services
via Bonomea 265 - 34136 Trieste - Italy
tel: +39-040-3787538
e-mail: brun...@sissa.it
web: http://itcs.sissa.it, http://www.sissa.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Monitor di rete.

2016-11-05 Per discussione Davide Brunato

On 05/11/2016 13:56, Gollum1 wrote:

tempo fa avevo usato una vecchia versione di whatsup gold, che se
anche molto spartana, mi permetteva di costruire le mappe della rete,
ed attivare dei monitor su eventi (caduta di connessione dei trunk e
cose del genere).

Visto che abbiamo deciso di rifare la macchina che usiamo per
monitorare la rete, volevamo un software analogo, ho provato a
scaricare la trial della versione 2017 di whatsup gold, ma non mi
piace per niente, troppo conplessa per quello che mi serve, le viste
non riesco a costruirle come voglio io (devi avere una vista della
struttura della rete intuitica, non autocostruita e dispersiva come la
fa lui). Per ultimo...prezzi che vanno dai 1400 euro per la versione
base fino ad oltre 4000 euro all'anno, mi pare un po' troppo...

Mi chiedevo se qualcuno di voi conosce ed ha avuto esperienza di
qualche software open source (anche a pagamento, ma ad una cifra
onesta), magari realizzata in python (sarebbe ancora meglio, platform
independent, partiamo su un client windows, ma l'intento sarebbe
spostarlo su un server linux che sto cercando di mettere in piedi).

Qualche anno fa avevo provato Zenoss (Zenoss Core, che è la parte 
gratuita), poi, non avendo estrema necessità di mappe, ho optato per 
rimanere su Nagios, affiancandolo con Cacti per il monitoraggio del 
carico. Comunque Zenoss mi era sembrato buono. In più è scritto 
prevalentemente in Python.


Un software che invece intendevo provare è Shinken 
(shinken-monitoring.org), altro prodotto scritto in Python. Il motivo 
principale del mio interesse è che utilizza come base le configurazioni 
di Nagios, con qualche caratteristica in più rispetto a Nagios Core.


N.B.: Come rete devo monitorare al limite qualche centinaio di 
nodi/server/servizi.

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python 3.6 & The Case Against Python 3

2016-11-25 Per discussione Davide Brunato
On 11/23/2016 09:47 AM, Pietro wrote:
> 
> Personalmente non condivido molte delle sue argomentazioni, però
> condivido la perplessità che con python 3.6 avremo ben tre modi diversi
> di fare lo string formatting. In genere tendo ad usare il vecchio %s
> etc, perchè più veloce... certo le f-string sembrano comode... però
> questi tre differenti modi per fare la stessa cosa sicuramente
> confondono chi inizia il linguaggio.
> 
> Buona giornata
> 
> Pietro
> 
> 
L'autore mi pare un tantino sopra le righe e fuori dal merito. Il
passaggio da ASCII a Unicode andava fatto e non poteva essere indolore.

Giusto un anno fa ho tenuto un corso Python per alcuni colleghi,
dottorandi e postdoc basandomi su Python 3. Avendo qualche collega
Bash-ista e Perl-ista avevo presentato anche la novità delle "f-string"
già annunciata per la 3.6. Per me le "f-string" colmano un vuoto per
interfacciarsi con l'ambiente e sono in linea con il format(). L'uso del
prefisso 'f', similmente ad altre tipologie di letterali stringa, non
lascia possibilità di confusione.

Ciao

Davide

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] setuptools e file di dati

2017-04-18 Per discussione Davide Brunato
On 04/18/2017 08:30 AM, Dedalus2000 wrote:
> 
> Credo che il mio problema principale sia il fatto che "data_files" non
> si comporta correttamente; ciò mi rende difficile scegliere dove mettere
> i dati e seguire una qualsiasi struttura predefinita.
> 
> Secondo la documentazione la dir. indicata è relativa a "sys.prefix", ma
> non è così. Ad esempio, considerando che sys.prefix ='/usr' con
> data_files=[ ['prova', ['data1/ff1.dat'']]
> 
> ottengo:
> /usr/local/lib/python2.7/dist-packages/project1-0.1-py2.7.egg/prova/ff1.dat
> 
> Ma se compilo il '.deb.' ottengo
> /usr/prova/ff1.dat
> 
>
Nell'EGG include tutto quello che fa parte del pacchetto.
Per installare solo i data files c'è un comando apposito:

 python setup.py install_data

Oppure mettendo un path assoluto dovrebbe farlo direttamente con install.

> Ho problemi con package_data a causa del fatto che i dati sono a livello
> del setup. Ad esempio dovrei scrivere:
> package_data={'mioprogetto': ['../../data1/*.dat']}
> 
> ma ovviamente non funziona.

Devono essere pattern relativi a sottodirectory della directory base del
package ("src/mioprogetto" nel tuo test). Quindi prima sposti data1/ in
src/mioprogetto/ e poi specifichi:

  package_data={'mioprogetto': ['data1/*.dat']},

I file dati vengono installati nella directory del package (es.
/usr/lib/python2.7/site-packages/project1-0.1-py2.7.egg/mioprogetto/data1/).

Ciao

Davide
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Scacchi

2017-05-05 Per discussione Davide Brunato
On 05/04/2017 06:15 PM, Gabriele Battaglia wrote:
> Salve.
> C'è qualche appassionato di scacchi fra voi?
> Qualcuno ha mai provato a realizzare un progetto che riguardi questo 
> bellissimo gioco. Ed in fine, la domanda principale: conoscete qualche 
> libreria scacchistica? Intendo un parser per il formato pgn, o, più 
> semplicemente, un controllore della legalità delle mosse. Non un motore vero 
> e proprio, ma una qualche libreria che insegni a Python le regole degli 
> scacchi.
> Grazie.
> Gabry.
> 
> Inviato da Gabryphone 7 Plus.
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
> 
Sì, facevo tornei anni fa, ora avendo meno tempo faccio qualche partita
ogni tanto. Avendo letto il libricino di Paolo Ciancarini avevo provato
a fare qualcosa, se non ricordo male proprio in Python.

Comunque per la tua domanda principale: hai provato a vedere PyChess? E'
un programma scritto interamente in Python molto strutturato (ha un
engine suo ma può usare anche altri engine) che dovrebbe includere anche
parti per analizzare le mosse.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Tipo: byte.

2017-06-22 Per discussione Davide Brunato
On 06/22/2017 09:14 PM, Gabriele Battaglia wrote:
> Avvicinandomi a Python 3, ho qualche difficoltà ad afferrare il concetto
> di tipo Byte.
> Se doveste spiegarlo in parole semplice, cosa direste e/o quale risorsa
> mi consigliereste di leggere?

In poche parole il tipo 'bytes' rappresenta le stringhe ASCII in Python
3. In Python 3 il tipo 'str' rappresenta stringhe Unicode ("le stringhe
sono per default Unicode ..."), mentre in Python 2 'bytes' e 'str' erano
lo stesso tipo, serviva per rappresentare stringhe ASCII, e c'era un
tipo distinto per rappresentare stringhe Unicode (tipo 'unicode', che in
Python 3 non c'è più).

Verificando il tipo dei letterali stringa in Python 3:

type(b'ciao')  # 
type('ciao')   # 
type(u'ciao')  # 

mentre in Python 2.7:

type(b'ciao')  # 
type('ciao')   # 
type(u'ciao')  # 

-- 
_
Davide Brunato

SISSA - International School for Advanced Studies
Information Technology and Computing Services
via Bonomea 265 - 34136 Trieste - Italy
tel: +39-040-3787538
e-mail: brun...@sissa.it
web: http://itcs.sissa.it, http://www.sissa.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Iteratori iterabile

2017-07-06 Per discussione Davide Brunato
On 07/05/2017 08:53 PM, Franky gmail wrote:
> Ciao,
> 
> Leggendo la pep-0234, in sintesi un oggetto iteratore deve avere due
> metodi: oggetto.__iter__() e oggetto.__next__). correggetemi se ho
> inteso male.
> 
> faccio un esempio:
> 
> creo una lista lista=['pippo', 'pluto', 'paperoga']
> 
> hasattr(lista,'__iter__') # vero
> 
> hasattr(lista,'__next__') # falso
> 
> quindi una lista (succede la stessa cosa anche con un set) non è un
> iteratore perchè non possiede entrambi i metodi sopraccitati. Però se
> creo un oggetto di tipo lista, possiede entrambi i metodi:
> 
> lista1 = lista.__iter__()
>

lista1 è un'iteratore, non più una lista e il metodo __iter__ serve
appunto per creare iteratori:

  iteratore_lista = iter(lista)
  next(iteratore_lista)  # 'pippo'
  next(iteratore_lista)  # 'pluto'
  next(iteratore_lista)  # 'paperoga'
  next(iteratore_lista)  # raise StopIteration

comunque per capire bene la tematica degli iteratori (e dei generatori)
a me è stato utile questo articolo:

  http://nvie.com/posts/iterators-vs-generators/

(NB: la figura ad inizio articolo me la sono stampata e appesa bacheca
per quando mi vengono dei dubbi ...)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] raise end exception

2018-04-26 Per discussione Davide Brunato
On 04/25/2018 11:38 AM, Gollum1 wrote:
> nell'esecuzione mi ritrovo il modulo PIL che in alcune situazioni non
> alza una eccezione, ma ritorna una stringa di errore, come la
> seguente:
> 
> /usr/lib/python3/dist-packages/PIL/TiffImagePlugin.py:756:
> UserWarning: Corrupt EXIF data.  Expecting to read 12 bytes but only
> got 4.
>   warnings.warn(str(msg))
> 
> il codice non viene interrotto (non essendo una eccezione) e non posso
> quindi gestire l'errore in modo diverso...
> 
> esiste una qualche metodologia per creare anche in questo caso una
> exception che sia sollevata con raise?
> 
> Grazie.
> 
Si tratta sempre di una eccezione solo che per default non viene
"sollevata".
Devi vedere la libreria 'warnings' se vuoi customizzare questo
comporamento.

-- 
_
Davide Brunato

SISSA - International School for Advanced Studies
Information Technology and Computing Services
via Bonomea 265 - 34136 Trieste - Italy
tel: +39-040-3787538
e-mail: brun...@sissa.it
web: http://itcs.sissa.it, http://www.sissa.it
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Break in un generatore

2018-07-25 Per discussione Davide Brunato
On 07/25/2018 11:56 PM, Lorenzo Mainardi wrote:
> Sto iterando su un generatore e vorrei usare una break per passare al
> prossimo elemento.
> Break mi esce direttamente dal "ciclo", così come raise StopIteration.
> C'è un modo per farlo?
> 
> -- 
> LORENZO MAINARDI
> 
> 

Penso che per passare al prossimo elemento del generatore devi usare
l'istruzione "continue".
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Sintassi sconosciuta...

2018-10-16 Per discussione Davide Brunato
On 10/16/18 1:06 PM, Alessandro Dentella wrote:
> mi sono accorto dopo tanti anni di uso di Python di non avere idea di
> questa sintassi:
> 
>   [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))
> 
> che trovate usata qui:
> 
>   #L1740
> 
> Che cosa fa? che senso ha usarla quando mi vengono in mente vari altri
> modi di ottenere quello che (forse, penso) faccia.
> 
> Soprattutto, quella riga st creandomi problemi...
> 
> Chi mi sa illuminare?
> 
Può servire ad estrarre da un iterabile/lista/tupla una sequenza di
valori, generando un errore in caso di discordanza nel numero di
elementi o se l'operando a destra non è un iterabile:

  >>> [a] = 1
  Traceback (most recent call last):
File "", line 1, in 
  TypeError: 'int' object is not iterable
  >>> [a] = 1,
  >>> a
  1
  >>> [a] = 1, 2
  Traceback (most recent call last):
File "", line 1, in 
  ValueError: too many values to unpack
  >>> [a] = []
  Traceback (most recent call last):
File "", line 1, in 
  ValueError: need more than 0 values to unpack

Credo sia equivalente alla sintassi con parentesi tonde, o a quella con
virgole, usata solitamente per il doppio assegnamento:

  >>> a, b = [4, 5]
  >>> a, b
  (4, 5)
  >>> a, = [6]
  >>> a
  6

Ciao

Davide
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Domanda da super niubbo sui generatori.

2021-03-10 Per discussione Davide Brunato

On 3/10/21 9:03 AM, Gabriele Battaglia wrote:

Buondì.
Sono nuovissimo nell'uso dei generatori, non li ho mai studiati ne usati 
prima.

Ora devo colmare questa laguna d'ignoranza, la "g" non è un refuso! :)
Vi chiedo 2 sciocchezze, per favore rispondete col metodo AIAF: As I am 
Five... si scriverà così? :)


Dunque, ho questo generatore qui:

import os
filesys = os.walk(os.getcwd())

So che posso fare una cosa del tipo:

for root, folders, files in filesys:
   print(f"Root is {root}")
   ...eccetera eccetera.

Ma se volessi sapere solo la root e basta, come la tirerei fuori dal 
generatore?
O, in altre parole, esiste solo il ciclo for, che mi permette diciamo di 
guardarci dentro?


Grazie.
Gabry.


Ciao,

un generatore è a tutti gli effetti un oggetto iteratore pronto all'uso, 
non serve necessariamente il for per gestire la sequenza di valori 
generata, ma basta applicare la funzione next().


Nel tuo esempio potrebbe essere:

  try:
 root, folders, files = next(filesys)
  except StopIteration:
 pass  # o interrompi i ciclo se se in un while ...
  else:
 ... # usi i 3 valori ottenuti


oppure puoi applicare un default appropriato quando chiami next():

  root, folders, files = next(filesys, ('', [], []))
  if root != '':
  ... # usi i 3 valori ottenuti

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] Offerta di lavoro per project leader di sviluppo software

2022-03-21 Per discussione Davide Brunato

Ciao a tutte/i,

SISSA Medialab cerca una persona per la gestione, progettazione e 
sviluppo di un progetto open source per un nuovo sistema di gestione 
peer review e pubblicazione di articoli scientifici.


Sono richieste ottime conoscenze del framework Django e di Python.

La sede di lavoro è Trieste con la possibilità di parziale remote working.

Per i dettagli sulla posizione aperta consultare la pagina al seguente link:

  https://medialab.sissa.it/it/chi-siamo-0


Davide Brunato

SISSA - Trieste
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python