[Python] Offerta di lavoro: Python developer per sviluppo applicazione web

2021-01-27 Per discussione Marco Santamaria
Ciao a tutti,

scusate per il cross-posting, ma mi sembra che l'offerta possa essere
d'interesse per entrambe le liste.

Nell'azienda dove lavoro si cercano sviluppatori Python, possibilmente con
esperienza in Django, per la realizzazione di un'applicazione web per una
pubblica amministrazione.

Sono richieste un'ottima conoscenza di Python e una buona esperienza con un
web framework e con test automation. Gradita una precedente esperienza con
CSS, JavaScript e nello sviluppo web per pubbliche amministrazioni.

Il progetto ha visibilità iniziale di 5 mesi ma sono aperte posizioni a
tempo indeterminato. Gli interessati posso chiedere maggiori informazioni o
inviare la propria candidatura corredata di CV a i...@sferaspa.com
indicando nell'oggetto DevPython.

Vista la situazione, c'è la possibilità di lavorare da remoto.

Saluti,
Marco Santamaria

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Progetto Python, Git, Setup.py

2018-02-09 Per discussione Marco Santamaria
Il giorno 9 febbraio 2018 11:03, Piergiorgio Pancino <
piergiorgio.panc...@gmail.com> ha scritto:

> Da quanto ho capito nel momento in cui un utente vorrà installare il
> package, setup.py si occupa di copiare ./lib/nomeprogetto nella cartella
> site-packages/nomeprogetto, copiare gli scripts nella cartella scripts di
> python eccetera. In linea di principio è corretto?
>

Diciamo di sì, ma in realtà è setuptools a fare queste operazioni, ammesso
che tu voglia usare setuptools.


> Ora se io invece voglio contribuire allo sviluppo non capisco se posso
> lasciare stare setup.py e lavorare nel cuore del codice che si trova
> tipicamente all'interno di:
>
> /lib/nomeprogetto/..
>
> quindi per testare il codice in locale mentre lo sto modificando faccio
> semplicemente:
> export PYTHONPATH=/home/usr/nomeprogetto/lib
> e poi lancio unittest all'interno della cartella:
>
> /homeprogetto/lib/nomeprogetto/test/
>
> E' corretto questo approccio? Posso aspettarmi che i miei test abbiano
> tutti i path settati corramente? Oppure dovrei ogni volta che faccio una
> modifica al codice dovrei reinstallare con setup.py e rilanciare i test?
>

L'approccio che dici tu va bene, ma forse è più comodo installare il
package in modalità editabile con pip:

pip install -e .

(dove il punto indica il progetto corrente), cosa che equivale ad
usare il setuptools
"development mode"

.

Lo stato dei vari tool per il packaging in Python ha una vita un po'
travagliata, ma si sta stabilizzando. A volte si trovano delle guide non
aggiornate che possono essere fuorvianti.
Un buon punto di partenza è la PyPA (Python Packaging Authority):

https://packaging.python.org/

Attualmente i tool raccomandati sono:

   - pip
   - wheel
   - setuptools
   - Pipenv

Ciao,

Marco
-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Celery persistent results

2017-10-05 Per discussione Marco Santamaria
Il giorno 4 ottobre 2017 11:28, Karim  ha scritto:

> Voi come fate? Ho a disposizione anche un db server Postgres quindi
> pensavo di usare quello per i risultati.
>

Come scritto da Paolo prima si usava django-celery per avere i risultati su
database e nell'admin, ora è meglio usare django-celery-results

e usare i settings:

INSTALLED_APPS = (...'django_celery_results',...)

CELERY_RESULT_BACKEND = 'django-db'


Nei progetti più nuovi ho usato questa configurazione senza problemi.

Marco
-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Sviluppo di nuovo package e import problem

2017-06-21 Per discussione Marco Santamaria
Il giorno 21 giugno 2017 08:24, Karim  ha scritto:

>
> Io penso che ci sia qualcosa da fare con PYTHONPATH. Ho provato ad
> inserire la path assoluta del mio "pyfaction" folder, ma niente. Ho anche
> messo un semplice ".", ma niente.
>
> Dove sbaglio?
>

Ciao Karim,

sono tanti gli approcci possibili, ma se è un package che devi distribuire
considererei l'idea di usare setuptools, wheel e di aggiungere un file
setup.py fuori dalla cartella che contiene __init.__py (serve un livello in
più).

Non è indispensabile, ma c'è un template abbastanza buono che contiene
tutto il setup necessario: https://github.com/audreyr/cookiecutter-pypackage
.

Fatto questo e creato un virtual environment, il tuo pacchetto si può
installare con "pip install ." e per sviluppare puoi aggiungere l'opzione -e

per evitare che venga installato dentro i site-packages.

Marco



-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Libro gratis Pakt: Expert Python Programming - Second Edition

2017-06-09 Per discussione Marco Santamaria
2017-06-09 9:55 GMT+02:00 Massimiliano della Rovere <
massimiliano.dellarov...@gmail.com>:

> https://www.packtpub.com/packt/offers/free-learning
>

Libro molto interessante, da leggere per bene.

Sfogliando velocemente mi ha colpito la discussione sulle problematiche
legate a mro e super, in particolare la conseguenza che viene tratta a pag.
90:

"Multiple inheritance should be avoided".

Mi pare un'affermazione piuttosto drastica...

Che ne pensate?

Marco
-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Riordinare un dizionario

2017-04-24 Per discussione Marco Santamaria
Il giorno 24 aprile 2017 17:51, Marcello  ha scritto:

> Ciao a tutti,
>
> devo ordinare un dizionario in base al nome.
> Ho provato, cercando sul web, OrderedDict dovrebbe essere quello che fa al
> caso mio.
>
> import collections
> diz = [{'add': '10', 'name': 'ccc', 'pwd': '12'}, {'add': '11', 'name':
> 'aaa', 'pwd': '45'}, {'add': '12', 'name': 'bbb', 'pwd': '79'}]
> print (collections.OrderedDict(sorted(diz.items(), key=lambda t: t[1])))
>

Ciao Marcello,

da quello che scrivi sembra che tu voglia ordinare una lista di dizionari.
Infatti, come ti hanno già detto diz è una lista di dizionari.

Se è cosi OrderedDict non è quello che ti serve.

Vedi qui

per risolvere usando la keyword "sorted".

Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] setuptools e file di dati

2017-04-17 Per discussione Marco Santamaria
Il giorno 17 aprile 2017 19:02, Dedalus2000  ha
scritto:

> Però ho un paio di problemi, in parte collegati:
> 1- Uso data_files=[['mioprogetto/datahome/data1', ['data1/ff2.dat',
> 'data1/ff1.dat']]] e, secondo la documentazione, la dir. di destinazione è
> relativa a sys.prefix, cioè a "/usr". Invece no, con "python setup.py
> install" risulta relativa alla root dell'istallazione finale. Strano, ma mi
> va bene così perché mi semplifica il lavoro. Però..
>
> 2- se cerco di pacchettizzare il progetto in un ".deb" con "python
> setup.py --command-packages=stdeb.command bdist_deb" ottengo che "data1"
> risulta dove dovrebbe essere secondo la documentazione, cioè in
> /usr/mioprogetto/datahome/data1
>

Ciao Alessandro,

anche io mi sono spesso scontrato con questa problematica e nel mio caso è
stato di solito risolutivo aggiungere a fianco di setup.py un manifest
template .

Però non so se è una buona pratica mettere il tuo package dentro la
cartella src  e, salvo situazioni molto complesse, conviene attenersi ad
una struttura standard:

https://github.com/pypa/sampleproject

Vedi pure quello che si dice qui:

http://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application
http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html

Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
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-23 Per discussione Marco Santamaria
Il giorno 23 novembre 2016 09:47, Pietro  ha scritto:

> Giusto per darvi un'idea dice:
>
> *"I cannot teach Python 3 to total beginners because I don't want them to
> think they "suck at programming" when really it's Python 3's fault. That's
> simply not fair to them, so I have to teach Python 2 so they have the best
> chance at learning to code.*
> *[...]*
> *If you learn Python 2, then you can still work with all the legacy Python
> 2 code in existence until Python dies or you (hopefully) move on. But if
> you learn Python 3 then your future is very uncertain. You could really be
> learning a dead language and end up having to learn Python 2 anyway."*
>
> Voi come la vedete?
>

Le argomentazioni portate sinceramente non mi sembrano stare in piedi.

1. Come è stato detto, ormai la maggior parte delle librerie sono state
portate  a Python 3. Quindi il futuro di Python 3
non è incerto, invece quello di Python 2 lo è .

2. Le stringhe sono più difficili da usare in Python 3 per un beginner?
Solo perché ci sono sistemi alternativi (e più potenti) per formattarle?
Piuttosto sono più facili perché non c'è una implicita conversione tra str
e unicode (con tutte le frustrazioni

annesse e connesse)

3. Il fatto che "Python 3 Is Not Turing Complete" mi pare più una
provocazione che una cosa seria.

4. La critica a quelle che lui chiama "statically typed strings" mi pare
insensata. In sostanza si vede come negativo il fatto di non poter
concatenare bytes e str. Ma In Python 2 ottengo un TypeError anche se provo
a fare 1 + 'abc'. Il concetto di dynamic typing non significa che non ci
debba essere nessun controllo sui tipi a runtime.

I tre metodi per la formattazione delle stringhe sono apparentemente una
violazione dello Zen of Python. Ma in realtà il vecchio % è stato lasciato
solo per retrocompatibilità con l'intenzione di deprecarlo prima o poi
. E la PEP 0498 introduce una
sintassi che è in continuità con quella del format
, riducendone un po'
di boilerplate.

Personalmente è ormai da più di un anno che sono passato a Python 3 per
tutti i progetti nuovi senza problemi.

Marco
-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Istanza di una classe da una stringa

2016-11-03 Per discussione Marco Santamaria
Il giorno 3 novembre 2016 07:26, Giammi  ha
scritto:

>
> Buon giorno  mi chiamo Battistella Gianmaria . Scusate l'ignoranza ! Sono
> un principiante Volevo sapere come creare una istanza ad una classe
> partendo da una stringa, es.
> Nomeclasse ='classe'
> Istanzaclasse=..
>

Puoi usare la built-in getattr, ma ti serve anche un riferimento al modulo
dove la classe è definita. :

import sys

class MyClass(object):
pass


my_class_module = sys.modules[__name__]
my_class_instance = getattr(my_class_module, 'MyClass')()

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Slack channel pythonita

2016-11-02 Per discussione Marco Santamaria
Il giorno 2 novembre 2016 14:09, Pietro Battiston 
ha scritto:

> Se non funziona non mi dà assolutamente alcun fastidio, ma se funziona
> rischia facilmente di rimpiazzare la mailing list e allora mi dà molto
> fastidio.
>
> (A me, a chi come me preferisce una mailing list ad un prodotto
> proprietario, ed anche a chi si limita a trovare tramite google i post
> della nostra mailing negli archivi - assumendo che non diventino
> pubblici anche gli archivi dello slack, cosa che però non mi sembra
> raccomandabile)
>

Sono d'accordo con Pietro: ho già assistito alla fine di una mailing list
per il passaggio a Slack.
Trovo più comodo seguire tramite lo stesso account email diverse community
su mailing list che seguire tramite diversi account slack diversi team e
canali.

Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-24 Per discussione Marco Santamaria
Il giorno 24 settembre 2016 02:08, Karim  ha scritto:

>
> Sto creando un sistema di classi che tramite una fixture json e' possibile
> simulare gli endpoints creando la situazione che si vuole emulare.​
>
>
Valuta anche https://github.com/kevin1024/vcrpy

Non è per creare reponse su misura, ma in alcuni test può essere comodo

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Possibili alternative a Cronojob in Python

2016-09-04 Per discussione Marco Santamaria
2016-09-03 9:48 GMT+02:00 Andrea D'Amore :

> Perché non usare uno degli scheduler già esistenti allora?
>

C'è anche lo scheduler di Celery che non mi sembra essere stato citato:

http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

La documentazione non è il massimo, ma alla fine mi ci sto trovando bene

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy di applicazione Django/Python3 con uwsgi su CentOS 7

2016-06-30 Per discussione Marco Santamaria
Il giorno 27 giugno 2016 11:59, Riccardo Magliocchetti <
riccardo.magliocche...@gmail.com> ha scritto:

> Non vuoi usare root, fa bene il pacchetto ad usare un altro utente
>

Anche se la configurazione di default del pacchetto CentOS (emperor e
tyrant) modificata con l'utente root funzionava, ho continuato ad indagare
e ho trovato questa risposta di Roberto De Ioris sulla mailing list di
uwsgi: http://lists.unbit.it/pipermail/uwsgi/2013-February/005370.html

Se non è cambiato qualcosa dal 2013, pare che per far funzionare l'emperor
nella modalità Tyrant (che è il default nel pacchetto CentOS) ci si aspetti
che sia impostato l'utente root nel file di configurazione principale.
Questo significherebbe che la configurazione di default di CentOS non è un
caso che non funzioni e che richieda di essere modificata con l'utente root.

D'altra parte sulla documentazione di uwsgi

questo non viene esplicitamente detto, ma si spiega che in modalità Tyrant
uid e gid impostati nei vassalli sono ignorati e si utilizzano invece
gruppo e utente del file che definisce la configurazione del vassallo
stesso. Ho provato e infatti il socket di comunicazione viene creato con
gruppo e utente tali e quali a quelli del file di configurazione.

Purtroppo, anche avendo uwsgi:nginx come proprietario del socket e della
cartella con permessi 664, nginx non riesce a vedere il socket:

connect() to unix:/var/run/uwsgi/.sock failed (13: Permission
> denied) while connecting to upstream
>

Invece eliminando la modalità Tyrant riesco a far partire l'emperor con
uid=uwsgi e gid=nginx. Infatti per il momento terrò questa configurazione,
ma ancora non riesco a vederci chiaro...

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy di applicazione Django/Python3 con uwsgi su CentOS 7

2016-06-27 Per discussione Marco Santamaria
Il giorno 27 giugno 2016 11:59, Riccardo Magliocchetti <
riccardo.magliocche...@gmail.com> ha scritto:
>
> Non vuoi usare root, fa bene il pacchetto ad usare un altro utente


Stranamente se assegno l'utente uwsgi che viene definito nel pacchetto al
gruppo nginx e lascio uwsgi sia come gruppo che come utente nel file di
configurazione generale uwsgi.ini (emperor), ottengo il seguente errore:

[emperor-tyrant] invalid permissions for vassal seta_fs.ini
>

Per ora la configurazione mi funziona solo con root.

Leggendo la documentazione del Tyrant mode
,
che serve proprio per evitare di far partire uwsgi come root, non ho capito
come conviene impostare uid e gid nella configurazione del vassal se lascio
uwsgi nell'emperor. Forse conviene creare un utente con privilegi ristretti
per il singolo vassal e aggiungerlo al gruppo nginx...

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy di applicazione Django/Python3 con uwsgi su CentOS 7

2016-06-27 Per discussione Marco Santamaria
Il giorno 24 giugno 2016 21:28, Riccardo Magliocchetti <
riccardo.magliocche...@gmail.com> ha scritto:


> Debian di default esce con una bella configurazione, simile a quella che
> viene usata per nginx, ecco la doc del pacchetto debian:
> http://paste.debian.net/753048/
>

Grazie Riccardo,

ieri stavo leggendo il tuo link e diceva delle cose interessanti sui
permessi che conviene dare al socket. Purtroppo oggi il link è scaduto :)

Uno dei vicoli che ho è quello di usare CentOS 7, quindi alla fine ho
installato con yum i pacchetti uwsgi e uwsgi-plugin-python3, trovando una
configurazione pronta in modalità emperor che immagino sia simile a quella
offerta da Debian.

Mi è bastato creare un file di configurazione in /etc/uwsgi.d/ dove ho
impostato l'opzione plugin=python3 e l'applicativo ora va con Python 3.
Stessa cosa potrei fare con altre applicazioni Python 3 sulla stessa
macchina.

Mi rimane qualche dubbio su come convenga impostare i parametri uid e
chmod-socket. Al momento ho messo uid = root nel file di configurazione
principale e chown-socket = root:nginx, anche se yum metteva uwsgi come
utente di default. Ma forse sarebbe più sicuro usare l'utente uwsgi e
aggiungerlo al gruppo nginx.

Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy di applicazione Django/Python3 con uwsgi su CentOS 7

2016-06-23 Per discussione Marco Santamaria
Il giorno 23 giugno 2016 15:06, Marco De Paoli  ha
scritto:

>
> Ma se il pip di sistema utilizza Python 2.7 e il mio virtual environment
>> usa Python 3.4, questo non può essere un problema?
>>
>
>
> no, direi di no
>
>>
Simone mi consiglia di installare globalmente con il pip riferito a
python3.4, il quale però è all'interno dell'environment visto che EPEL non
mette a disposizione pip3. Farò una prova.


> con pip sei sicuro di installare l'ultima versione disponibile su pypi
> (che normalmente è molto aggiornata)
> con yum dipendi dalle scelte dei mantainer...
> non so quale versione proponga yum al momento, ma da come ricordo era
> piuttosto vecchiotta
>

Su pypi c'è la 2.0.13, mentre su EPEL la 2.0.12, pensavo non fosse proprio
obsoleta.


> oltre al fatto che gli step di installazione proposti da digital ocean
> prevedono di installare uwsgi in modalità emperor
> che mi pare decisamente la più flessibile
> e anche qui non so invece cosa decida di fare il pacchetto installato con
> yum
>

Ma il fatto di utilizzare di utilizzare o meno la modalità emperor non
dipende dalle opzioni di uwsgi? Come può essere deciso dal pacchetto
installato con yum?

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy di applicazione Django/Python3 con uwsgi su CentOS 7

2016-06-23 Per discussione Marco Santamaria
2016-06-23 14:48 GMT+02:00 Marco De Paoli :
>
> """
> Now that the development files are available, we can install uWSGI
> globally through pip by typing:
> sudo pip install uwsgi
> """
>
> ... non mi pare che sia all'interno dell'environment, bensì globale
> risulterà un solo uwsgi per tutti i virtualenv
>

Ma se il pip di sistema utilizza Python 2.7 e il mio virtual environment
usa Python 3.4, questo non può essere un problema?

Che vantaggio c'è a installare globalmente con pip invece che con yum (su
EPEL c'è la versione 2.0.12)?

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Deploy di applicazione Django/Python3 con uwsgi su CentOS 7

2016-06-23 Per discussione Marco Santamaria
Forse dall'oggetto si capisce già che la domanda è molto specifica, forse
troppo.

Sto effettuando il deploy di un progetto Django su una macchina CentOS e
devo utilizzare uwsgi per la prima volta, avendo finora utilizzato solo
Gunicorn in altri progetti.

Il progetto utilizza Python 3.4 e già ho abilitato il repository EPEL per
CentOS che lo metta a disposizione e già ho creato il virtual environment
dove l'interprete Python è nella versione corretta.

Mi chiedevo se qualcuno ha esperienza su un ambiente simile e mi può
consigliare qual'è il modo migliore per installare e configurare uwsgi
globalmente con il supporto a Python 3.4. Vorrei evitare di utilizzare
uwsgi dentro il virtual environment perché sulla stessa macchina potrebbero
essere installate diverse applicazioni Django, ciascuna con il suo virtual
environment, e vorrei far partire un unico servizio uwsgi con systemd.

Finora ho provato diverse soluzioni e l'unica che ha funzionato è quella
che prevede l'installazione di uwsgi all'interno dell'environment:


   -
   http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
   -
   
https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-centos-7
   -
   
https://www.digitalocean.com/community/tutorials/how-to-set-up-uwsgi-and-nginx-to-serve-python-apps-on-centos-7


Grazie,
Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] E voic he ne pensate?

2016-06-06 Per discussione Marco Santamaria
Il giorno 6 giugno 2016 15:02, Valerio Maggio  ha
scritto:

> Btw, ma davvero esiste un linguaggio che si chiama "Coq" ?! ...
>


E lo hanno pure usato per dimostrare il teorema dei quattro colori!


-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] __debug__ e EAFP

2016-05-12 Per discussione Marco Santamaria
Il giorno 12 maggio 2016 10:24, Carlos Catucci <carlos.catu...@gmail.com>
ha scritto:

> Se ho ben capito Martelli ha detto che si usano in sviluppo testing
> solamente. Oppure ho frainteso il post di Marco (Santamaria)?
>

Se non ricordo male, la morale era quella. Magari possiamo aspettare che
venga pubblicato il video e ricontrollare.
Comunque mi pare che in questo thread la questione sia stata sviscerata ed
è chiaro che gli assert nel codice in produzione non siano un delitto, a
patto di non basare il funzionamento sul try degli AssertionError.

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] __debug__ e EAFP

2016-05-10 Per discussione Marco Santamaria
Il 10 maggio 2016 12:03, Pietro Battiston  ha
scritto:
> È considerata una flag criminale e sostanzialmente inutilizzabile?
> O dovrei invece pensare che il principio EAFP¹ tendenzialmente non si
> applica agli AssertionError, che invece vengono usati solo veramente
> per statement che devono essere sempre vere (e non "false ma catched")?

Alex Martelli all'ultimo PyCon di Firenze ha toccato questo punto e il
succo era che gli assert statement non sono da usare per fare il catch
degli AssertionError, ma dovrebbero essere usati solo i fase di sviluppo
per accertarsi che certe condizioni siano verificate. Oppure nei test. Ha
motivato questo fatto proprio con l'esistenza dell'opzione '-O'.

Marco
-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Biglietto PyCon

2016-04-14 Per discussione Marco Santamaria
Sembra che prendere un biglietto per un'altra persona sia previsto.

Offerta dell'ultimo minuto: metà prezzo rispetto alla tariffa early bird

Il giorno 14 aprile 2016 16:28, Marco Santamaria <marco.santama...@gmail.com
> ha scritto:

> Qualcuno potrebbe essere interessato ad un biglietto in early bird per la
> PyCon?
>
> Aspetto risposta dagli organizzatori per sapere se lo posso cedere.
>
> In caso contattatemi.
>
> Ciao,
> Marco
>
> --
> |_|0|_|
> |_|_|0|
> |0|0|0|
>
>


-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Biglietto PyCon

2016-04-14 Per discussione Marco Santamaria
Qualcuno potrebbe essere interessato ad un biglietto in early bird per la
PyCon?

Aspetto risposta dagli organizzatori per sapere se lo posso cedere.

In caso contattatemi.

Ciao,
Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Python 8

2016-04-01 Per discussione Marco Santamaria
È ufficiale, la PSF ha deciso che la nuova major release di Python sarà la
8 e sarà obbligatorio scrivere codice pep8-compliant:

https://mail.python.org/pipermail/python-dev/2016-March/143603.html

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] attributi astratti?

2016-03-15 Per discussione Marco Santamaria
Il giorno 15 marzo 2016 17:38, enrico franchi  ha
scritto
>
> O a me non e' chiaro quale sia il tuo problema concreto, oppure tu non hai
> guardato la doc per abstractproperty.
>
> https://docs.python.org/2/library/abc.html#abc.abstractproperty
>

In effetti lo avevo visto, e mi era sembrato un po' più appropriato che
richiedere un metodo come con @abstractmethod. In realtà da Python 3.3 è
deprecato in favore dell'uso combinato di @property e @abstractmethod. Il
guaio di questo approccio è che le classi derivate devono implementare un
metodo decorato con @property e non basta definire una proprietà
(giustamente non attributo, che è più generale) come con @abstractmethod:

In [1]: from abc import ABC, abstractmethod
>
> In [2]: class B(ABC):
>...: @property
>...: @abstractmethod
>...: def foo(self): pass
>...:
>
> In [3]: class A(B):
>...: foo = 'bar'
>...:
>
> In [4]: A()
> Out[4]: <__main__.A at 0x7f2940d14160>
>
> In [5]: A().bar
> ---
> AttributeErrorTraceback (most recent call last)
>  in ()
> > 1 A().bar
>
> AttributeError: 'A' object has no attribute 'bar'
>
> In [6]: class C(ABC):
>...: @abstractmethod
>...: def foo(self): pass
>...:
>
> In [7]: class D(C):
>...: foo = 'bar'
>...:
>
> In [8]: D()
> Out[8]: <__main__.D at 0x7f2940d320f0>
>
> In [9]: D.foo
> Out[9]: 'bar'
>

Comunque abstractproperty (o equivalentemente property + abstractmethod) si
avvicina di più a quello che cercavo.

Poi mi è venuta in mente anche una quarta possibilità: chiamare hasattr nel
metodo __new__ della classe astratta, cosa che segnala l'eccezione un po'
prima che se chiamato in __init__

Grazie,
Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] attributi astratti?

2016-03-11 Per discussione Marco Santamaria
Ciao,

sto lavorando ad un piccolo framework nel quale mi sento autorizzato ad
usare il modulo abc per creare delle classi astratte/interfacce per
permetterne l'estensione.

Mi sono trovato spesso a dover assicurare la presenza di un attributo nelle
classi derivate da una classe astratta, senza avere la possibilità di
fornire un valore di default ragionevole.

Data la natura dinamica di Python questo può essere fatto in vari modi, ma
mi chiedo quale sia quello più 'idiomatico' in Python 3.4, facendo in modo
che venga sollevata il prima possibile un'eccezione chiara se
quell'attributo non viene definito.

Al momento mi sono venute in mente tre soluzioni:

   1. controllare con hasattr la presenza dell'attributo nel metodo
   __init__ della classe astratta
   2. definire nella classe astratta una proprietà (decorata con @property)
   che solleva un'eccezione NotImplementedError
   3. definire nella classe astratta un metodo astratto (decorato con
   @abstractmethod) con lo stesso nome dell'attributo

Sto usando la 3. quando possibile perché solleva un'eccezione prima delle
altre, ma non mi piace molto l'idea di richiedere un metodo quando voglio
un attributo.

Grazie,
Marco

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] un saluto e parto subito con una domanda...

2016-03-07 Per discussione Marco Santamaria
Il giorno 5 marzo 2016 14:36, Davide Olianas  ha
scritto:

> 2) Mi confermate che in setup.py install_requires dovrebbe contenere solo
> i nomi delle dipendenze senza specificare le versioni con cui ho testato il
> codice, cosa da fare invece in requirements.txt?
>

Ho trovato una risposta soddisfacente a questo dubbio in questo non
recentissimo post, scritto da uno degli sviluppatori di pip:
https://caremad.io/2013/07/setup-vs-requirement/

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


Re: [Python] Generare PDF complessi

2015-05-26 Per discussione Marco Santamaria
Nel progetto in cui lavoro abbiamo sperimentato prima la soluzione 3) ed
avevamo preso in considerazione i seguenti pacchetti:

   - https://github.com/chrisglass/xhtml2pdf
   - https://github.com/Kozea/WeasyPrint
   - https://github.com/JazzCore/python-pdfkit

Poi come tu dici ci siamo resi conto che non c'è un grande controllo
sull'impaginazione del PDF partendo dall'HTML. Se non è un progetto web
escluderei la soluzione 3).

Alla fine siamo andati sulla soluzione 2) e abbiamo scelto reportlab
http://www.reportlab.com/ e ci troviamo abbastanza bene.

Marco


Il giorno 26 maggio 2015 10:08, Simone Ziraldo simone.zira...@gmail.com
ha scritto:

 Ciao a tutti,
 vi scrivo per chiedervi un consiglio.
 Devo produrre in modo automatico dei file pdf a partire da degli
 oggetti che derivano dalla deserializzazione di xml/json. La struttura
 di questi pdf è abbastanza complicata perché ci sono tabelle, grafici,
 ...
 Le possibili soluzioni che mi sono venute in mente sono:
 1) genero un file latex che poi compilo
 2) uso una libreria direttamente in python che genera pdf
 3) genero un html e poi lo stampo in pdf

 Per un progetto del tutto simile ho usato la soluzione 1 e devo dire
 che mi sono sempre trovato bene. Latex non è una scheggia ma la
 qualità dei file generati è ottima.
 La soluzione 2 non mi piace molto, non vorrei legarmi troppo a qualche
 libreria e non credo che la qualità dei pdf prodotti sia simile a
 quella di latex.
 La soluzione 3 non mi dispiacerebbe perché se in un futuro si
 decidesse di inserire questi documenti in pagine web avrei già tutto
 pronto. Ma (a) non saprei cosa usare per stampare html in pdf e (b)
 non so quanto controllo ci sia sul layout come ad esempio interruzioni
 di pagina, intestazioni,...

 Voi cosa consigliereste?

 Grazie mille,
 Simone
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

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


Re: [Python] [OT] Reti neurali e IA

2015-05-14 Per discussione Marco Santamaria
Il giorno 11 maggio 2015 11:40, Marco Ippolito ippolito.ma...@gmail.com
ha scritto:

 Ti consiglio caldamente, prima di usare qualsiasi software, di farti
 le basi teoriche e matematiche, senza  le quali, secondo me, rischi di
 non capire cosa succede: https://www.coursera.org/course/ml


Qualcuno ha fatto questo corso e lo può consigliare rispetto ad altri? Ho
visto che su Coursera ce ne sono molti sulla materia:

   - https://www.coursera.org/course/machlearning
   - https://www.coursera.org/course/predmachlearn
   - https://www.coursera.org/specialization/jhudatascience/1/certificate

Il giorno 12 maggio 2015 08:44, Valerio Maggio valerio.mag...@gmail.com
ha scritto:

 [1]: http://goo.gl/sxImCP
 [2]: http://goo.gl/qpWq0o
 [3]: http://goo.gl/SNF0Il
 [4]: https://goo.gl/x9knkz


Grazie per la preziosa bibliografia, aggiungo anche il manuale di Ethem
Alpaydin
http://stp.lingfil.uu.se/~santinim/ml/2014/Alpaydin2010_IntroductionToMl_2ed.pdf
che usano come testo di base in alcune università.

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


Re: [Python] Pettegolezzi su Python

2015-04-16 Per discussione Marco Santamaria
 Questo risponde a tutte le domande:

 https://www.youtube.com/watch?v=G-uKNd5TSBw


Grazie per il link! Nel video Guido rimanda a PEP484
https://www.python.org/dev/peps/pep-0484/ e a quest'altro più specifico:

https://www.youtube.com/watch?v=2wDvzy6Hgxg

Si dice, mi pare che in Python 3.5 i type hint ci saranno, ma saranno una
specie di linter del tutto opzionale.

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


Re: [Python] Pettegolezzi su Python

2015-04-16 Per discussione Marco Santamaria
Il giorno 16 aprile 2015 16:10, Francesco Maida francesco.ma...@gmail.com
ha scritto:

 Ho sentito che per alcuni sono l'equivalente informatico dell'anticristo,
 ma a me non dispiacerebbe averle.


A me piacerebbe sapere in quali contesti il gradual typing in Python
potrebbe risultare vantaggioso e quando no.
Quella del gradual typing sembra una tendenza diffusa anche in altri
linguaggi (PHP/Hack, JavaScript/TypeScript).

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


Re: [Python] Richiesta chiarimento per calcoli con numeri decimali

2015-04-14 Per discussione Marco Santamaria
Ho trovato utili questi articoli:

   - http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
   - http://www.lahey.com/float.htm
   - https://docs.python.org/2/tutorial/floatingpoint.html
   - http://www.lightbird.net/py-by-example/decimal-module.html

Nei casi in cui ci si scontra con questi problemi a volte è il caso di
usare Decimal invece di float

Marco

Il giorno 14 aprile 2015 09:43, Daniele Varrazzo p...@develer.com ha
scritto:

 On 2015-04-14 00:26, Carpediem wrote:

 Ho un problema su cui sicuramente qualcuno di voi saprà fornirmi una
 risposta.
 Per quel che mi riguarda, ho perso tre giorni prima di scoprire un
 comportamento sul modo di contare di python che mi porta a risultati
 fuorvianti. Ecco il punto:
 sb = 3287628061
 mb = sb / 60 # con la calcolatrice ottengo 54793801.0167
 m1 = int(mb) # ottengo 54793801
 s = int ((mb-m1)*60 # Con la calcolatrice ottengo 1 ma python
 restituisce alla variabile s il valore di 0,999403953552 e quindi
 0

 A questo punto, quindi, se chiedo di stampare s invece che ritrovarmi
 il valore 1 ottengo 0
 utilizzando una comune calcolatrice, o quella fornita dallo stesso
 windows, ciò che ottengo effettuando 3287628061/60 è 54793801,0167
 Se invece chiedo a Python di stamparmi il risultato, dopo la virgola
 ottengo 01 e una serie di 6 senza che compaia il 7 finale.
 Tale differenza, quando chiedo di determinare il valore intero di s,
 comporta il mancato raggiungimento del valore di unità (che invece
 dovrei ottenere) producendo tutta una serie di conseguenze errate a
 catena sui risultati delle operazioni successive.
 Qualcuno potrebbe avere la gentilezza di spiegarmi questo comportamento?
 e soprattutto, c'è un modo per chiedere un arrotondamento in eccesso
 per la n cifra decimale?


 Ci sono corsi universitari interi sul comportamento dei numeri in virgola
 mobile. In breve: non sono precisi. In meno breve, una rapida googlata ti
 porta diversi esempi

 https://www.google.co.uk/webhp?#q=floating+point+number+problems

 Questo sembra divertente, poi me lo guardo: http://floating-point-gui.de/

  So che potrei ottenere un numero intero utilizzando per la divisione
 l'operatore // ma sono particolarmente interessato a capire e
 risolvere il problema contemplando l'utilizzo dei numeri in virgola
 mobile.


 Usa round() invece di int() per convertire il numero all'intero più vicino.

 -- Daniele

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

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


Re: [Python] 10 myths

2015-03-25 Per discussione Marco Santamaria
Il giorno 25 marzo 2015 11:50, Nicola Larosa n...@teknico.net ha scritto:

 Simone Federici wrote:
  {
  ma quanto mi disturbano le parentesi...
  }

 Eh, ormai ci ho rifatto il callo.

 Pochi programmatori apprezzano il genio dell'indentazione significativa:
 sarebbe stato un problema per l'adozione del linguaggio, ancor più dello
 svantaggio di non poter avere funzioni anonime inline.

 Non credo che Pike e Thompson si siano proprio posti il problema se
 mettercele o meno.


Pare che se lo siano posto il problema. In questo articolo
https://talks.golang.org/2012/splash.article viene motivata la scelta di
evitare l'indentazione per delimitare i blocchi di codice:


Some observers objected to Go's C-like block structure with braces,
 preferring the use of spaces for indentation, in the style of Python or
 Haskell. However, we have had extensive experience tracking down build and
 test failures caused by cross-language builds where a Python snippet
 embedded in another language, for instance through a SWIG invocation, is
 subtly and *invisibly* broken by a change in the indentation of the
 surrounding code. Our position is therefore that, although spaces for
 indentation is nice for small programs, it doesn't scale well, and the
 bigger and more heterogeneous the code base, the more trouble it can cause.
 It is better to forgo convenience for safety and dependability, so Go has
 brace-bounded blocks.



Ma non riesco a digerire questo fatto...
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Io lo so che coem sistemista faccio schifo

2015-03-19 Per discussione Marco Santamaria
MI inserisco in questa discussione, visto l'intervento di Roberto che di
uwsgi ne sa qualcosa :)

Per il deploy di un piccolo applicativo in Django che gestisce delle
immagini in una intranet aziendale ho scelto di usare gunicorn+nginx,
soprattutto per la facilità di configurazione, ma sono ai primi passi e
faccio in tempo a cambiare idea.

Che vantaggi avrei a usare uwsgi?

Grazie,
Marco

Il giorno 19 marzo 2015 11:24, Roberto De Ioris robe...@unbit.it ha
scritto:


  pero' che due maroni.
  Ho sempre usato hosting (tipo Alwaysdata) che mi danno la possibilita' di
  deployare un progetto Django senza dover impazzie troppo. Al massimo
  richiedono una specigfica struttura nell'albero delel directories, tipo
  mettere static in root del progetto oppure nelal cartella dove riside
  anche
  settings.py, per dire.
  Stavolta devo deployare su un server su cui o pieno accesso.
  Primo tentativo: nginx+uwsgi. Non va neppure se lo prendo a calci sui
  denti.
  Secondo tentativo: siccome le cose non vanno aggiungiamo un layer di
  complessita', per farci del male. Ho provato a mettere Gunicorn. Sara'
 che
  non sono una giovane fanciulla vergine, ma nessun risultato apprezzabile.
  Bene mi sono detto, torniamo sul caro vecchio Apache2. Assieme al suo
  modulo mod_wsgi dovrei avere vita facile (memore dei tempi in cui usavo
 il
  poco efficiente mod_pthon ma che andava liscio).
  Per farla breve sono alla frutta (niente banane, grazie!). Qualcuno ha un
  link ad un tutorial fatto bene davvero che poi funziona? Il server e' un
  Ubuntu Server 10.04.
 
 

 Guarda questo di solito fa' contenti tutti:

 http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html

 ma seguilo passo passo (quindi non usare i pacchetti di ubuntu,
 soprattutto della versione obsoleterrima che stai usando)

 Visto che la distribuzione non e' piu' supportata ipotizzo che sei in una
 lan, quindi nginx puoi anche evitartelo. Una volta che l'app gira su
 uWSGI, fermati li' :)


 --
 Roberto De Ioris
 http://unbit.com
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

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


Re: [Python] Io lo so che coem sistemista faccio schifo

2015-03-19 Per discussione Marco Santamaria
 Beh, probabilmente nessuno, come non hai probabilmente nessun vantaggio a
 usare nginx in una intranet, gunicorn da solo bastava (come quasi
 sicuramente potevi usare anche il runserver di django)


Questo non lo capisco: in una intranet non c'è ugualmente bisogno di un
vero web server? Nel mio caso ho parecchi uffici distanti, qualche
centinaio di utenti e dei contenuti statici importanti (immagini di grandi
dimensioni), quindi pensavo che lasciare tutto in mano a Gunicorn o al
server di sviluppo di Django non fosse fattibile.

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


Re: [Python] R: Re: R: Re: Come iniziare

2015-02-12 Per discussione Marco Santamaria
Ultimamente ho provato pure questo: https://www.hackerrank.com/

Andando avanti ci sono anche problemi difficili.

Ciao

Il giorno 12 febbraio 2015 16:37, Paolo Di Ieso paolodii...@libero.it ha
scritto:



  Messaggio originale
 Da: marcob...@gmail.com
 Data: 12/02/2015 16.14
 A: Paolo Di Iesopaolodii...@libero.it, Discussioni generali sul
 linguaggio Pythonpython@lists.python.it
 Ogg: Re: [Python] R: Re: Come iniziare

 E naturalmente Project Euler:
 https://projecteuler.net/


 Questa rischia di diventare una droga però...

 Ne sono uscito con fatica :-)


 L'OP è avvisato! :-D

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


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


Re: [Python] Parametrizzare UnitTests in Python

2014-12-11 Per discussione Marco Santamaria
  Ma fatti un favore: passa a pytest e fine della fiera.



Con pytest mi sto trovando molto bene. Si può lanciare lo stesso test con
un insieme di fixtures diverse creando una fixture parametrica
http://pytest.org/latest/fixture.html#fixture-parametrize e tanto altro.

pytest é di una comodità estrema, anche per l'approccio no-boilerplate e
per l'uso dell'assert statement: test diventano molto leggibili.

Mi piacerebbe sentire se qualcuno ha avuto modo di confrontarlo con nose.

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


Re: [Python] Dizionario modificato.

2014-09-05 Per discussione Marco Santamaria
 Cosa succede nel primo caso?
 Viene modificato il dizionario messo nella lista?
 Perché?


Nel primo caso ogni iterazione del ciclo for modifica lo stesso oggetto
elem, definito fuori dal ciclo e aggiunto più volte alla lista. Quando
viene inserito l'oggetto nella lista non viene ridefinito, come nel secondo
esempio.

Questo codice, ulteriormente semplificato eliminando il for, forse si
capisce meglio:

elem = dict()
 lista = []

 elem['nome'] = 0
 lista.append(elem)

 elem['nome'] = 1
 lista.append(elem)

 print lista


L'output è:

[{'nome': 1}, {'nome': 1}]


Se invece scrivo:

lista = []

 elem = dict()
 elem['nome'] = 0
 lista.append(elem)

 elem = dict()
 elem['nome'] = 1
 lista.append(elem)

 print lista


elem viene ridefinito prima del secondo inserimento e infatti l'output è:

[{'nome': 0}, {'nome': 1}]


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