Re: [Python] [OT] Coordinate geografiche pdi e poligoni
Il 01/04/2013 21:16, Diego Barrera ha scritto: Scusate l'ot, comunque poi risolvero' tutto in python :) Ho una anagrafica di indirizzi georeferenzati con latitudine e longitudine; ho l'intenzione di creare delle aree geografiche per suddividere i vari indirizzi. 1. definita un'area geografica come un poligono i cui vertici sono identificati da latitudine e longitudine, come verifico se un punto e' all'interno del poligono? 2. cosa caspita devo cercare su google per documentarmi sull'argomento senza impazzire (ho sprecato una pasquetta ;) ) ? Mi scuso di nuovo per l'OT, ma sicuramente qualcuno avra' avuto a che fare con un problema simile e non so veramente dove sbattere la testa. Ciao diego Ciao, io per le immagini ho usato: import matplotlib.nxutils as nx che fa parte della libreria matplotlib nx.points_inside_poly(points, verts) è il comando che ti serve (penso) Ciao Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] problema di licenze...
Ciao a tutti, una semplice domanda per la lista. Vorrei rilasciare del codice in con licenza open ma al suo interno utilizzo: import gtk # GNU LGPL import sys # Copyright © 2001-2013 Python Software Foundation. All rights reserved. import subprocess # Copyright © 2001-2013 Python Software Foundation. All rights reserved. import numpy as np # Copyright http://www.numpy.org/license.html import pygame # GPL import Image,ImageDraw # Copyright © 1997-2011 by Secret Labs AB Copyright © 1995-2011 by Fredrik Lundh http://www.pythonware.com/products/pil/license.htm import os # Copyright © 2001-2013 Python Software Foundation. All rights reserved. import time # Copyright © 2001-2013 Python Software Foundation. All rights reserved. import cv # BSD import scipy# BSD (SciPy) Qualcuno mi potrebbe dare una dritta su che licenza devo/posso utilizzare in un contesto simile. Sono rimasto stupito di vedere sul sito di numpy ad esempio è riportata [0] BSD License ma se clicco sul link License [1] trovo: Copyright © 2005-2013, NumPy Developers. All rights reserved. [0] http://www.numpy.org/index.html [1] http://www.numpy.org/license.html Mi sono perso qualche cosa? Comunque la questione fondamentale è come posso rilasciare il mio codice che include le librerie sopra e con che licenze posso farlo. Grazie Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Scelta di un IDE
Il 12/09/2013 20:50, Marco Fochesato ha scritto: Io uso Geany. Buona serata a tutti! +1 ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] filtrare ai margini
Il 19/09/2013 00:18, Vittorio Spina ha scritto: ciao, che sappiate esiste un modo più elegante per evitare quello che segue? x = UnCertaFunzioneCheRitornaINT() if x>67: x=67 if x<-67: x=-67 Ciao, non so se hai contemplato la possibilità di usare moduli esterni ma io uso spesso: numpy.clip Molto utile su arrai/liste ma dovrebbe funzionare. Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Leggere tag RFID con PySerial
Ciao a tutti, ho questo lettore RFID: http://www.apromix.it/product.asp?IdProdotto=999 Da linux mi viene creato il dev ttyUSB0 Ho scritto il seguente codice: import serial if __name__ == '__main__': buff = '' ser=serial.Serial('/dev/ttyUSB0',125000,timeout=0) while True: a=ser.read(ser.inWaiting()) buff = buff + a print a print len(buff) if '\n' in buff: lines = buff.split('\n') last_received = lines[-2] print last_received Il tutto sembra funzionare nel senso che qualcosa arriva tramite la seriale. len(buff) aumenta ogni volta che avvicino la carta ma con print a non mi viene mostrato alcun numero/carattere. Sapete dirmi come decodificare quello che arriva? Sembra non arrivare mai un "/n". Grazie per ogni aiuto. Ciao Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] python SQL?
Ciao a tutti, mi trovo ad affrontare la mia prima applicazione che fa uso di database. Quale mi consigliate? E' da un po' che seguo questa lista e mi sembra che quasi tutti siate orientati verso PostgreSQL... sbaglio? Ho anche dato un occhiata in giro per vedere che libreria usare e ne ho viste di molti tipi. Psycopg1, Psycopg2, bpgsq ? Accetto qualsiasi consiglio considerate anche che è il mio primo approccio ai db ma che potrei averne bisogno anche in futuro. Grazie Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python SQL?
Il 15/02/2014 15:48, Pietro Zambelli ha scritto: Dipende un po' da cosa devi fare, se è sempre per l'applicazione con RFID, Si forse potresti optare anche per qualcosa non SQL tipo MongoDB: http://api.mongodb.org/python/current/tutorial.html Grazie Pietro... mentre guardo meglio il link mi sapreste dire che differenza c'è tra un db SQL e un altro? Solo il linguaggio? Potenzialità, limiti? Grazie Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python SQL?
Il 15/02/2014 15:55, Francesco Stablum ha scritto: ti consiglio di usare SQLite: http://www.sqlite.org/ http://docs.python.org/2/library/sqlite3.html Dal tuo post non si capisce perche' SQL sia essenziale. Dovete perdonarmi ma sono completamente niubbio sul tema... ho sempre sentito parlare dei db che ho citato sopra ma sto cominciando adesso a farmi un idea. Userò, almeno all'inizio, il db solo in locale e solo da python con esportazione in csv (o simili). Nel caso non lo fosse ti consiglio questi DBMS: * MongoDB http://www.mongodb.org/ , * UnQLite promette bene: http://unqlite.org/ https://pypi.python.org/pypi/unqlitepy Ora guardo mongodb che mi sembra, per quello che devo fare, la soluzione migliore... poi arriverò con un sacco di altre domande. Sono comunque sempre ben accetti consigli, spiegazioni, suggerimenti. Grazie Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python SQL?
Il 16/02/2014 14:04, Manlio Perillo ha scritto: Perchè, in questo caso specifico, un ORM è una bestia molto complessa, e consigliarlo ad uno che adesso sta cominciando con i database relazionali non è una buona cosa. Ciao, sto seguendo con interesse ma il livello si è alzato un po' ;) Cerco di spiegarvi cosa vorrei fare. Per adesso si tratta di una piccola applicazione per tener traccia di accessi e pagamenti per una associazione. Scenario: Qualche centinaio di utenti avranno una carta RFID (codice univoco) con la quale potranno accedere alla sala dell'associazione. Ad ogni codice nel db corrisponderà l'anagrafica, numeri di telefono ecc, una decina di cose specifiche dell'associazione. Oltre a questo, ogni ingresso/uscita andrebbe immagazzinato da qualche parte. All'ingresso vi sarà anche un controllo se l'utente è in regola con i pagamenti delle quote associative. Gli utenti possono essere di vario tipo (studenti/Adulti/pensionati) con vari tipi di possibile associazione (mensile/annuale/n°di ingressi). Tutti i controlli verranno fatti via sw appoggiandomi ad un db (sto propendendo per mongodb... ma non sono ancora sicuro) Ho visto un po' di differenze tra db relazionali e documentali e penso che per il mio caso non faccia molta differenza quale uso. (il numero di campi sarà fisso) Anche i tempi delle varie query penso siano insignificanti in entrambi i casi visto che si parla di qualche migliaio di dati. Non mi è invece molto chiaro come posso immagazzinare tutte le date/ora degli ingressi e uscite? suggerimenti? Come facilità d'uso cosa mi consigliate? mongodb? SQLite? Dimenticavo... l'accesso al db avverrà sempre dallo stesso sw ma in due modi distinti, tramite la gui con richiesta dell'utente e, in automatico quando un utente "passa" la tessera con l'RFID, servirà prevedere thread per questo? Scusate se non ho chiarito prima questi punti che avrebbero potuto aiutarvi ad aiutarmi ma da non avevo proprio idea di come partire. Grazie dell'aiuto (anche di domenica) Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] info su db
Ciao a tutti, dopo un po' di stallo riprendo la questione db con nuove domande. Prescindendo dal tipo di db scelto Dovrei usare il db per immagazzinare tutte le info degli utenti, e fin qui non ci sono problemi. Ad ogni utente è assegnato un codice (ID) contenuto in una tessera con chip RFID. Ad ogni ingresso/uscita gli utenti devono passare la tessera su un lettore e in quel momento la data e l'ora devono essere immagazzinate da qualche parte nel db. Forse è una domanda stupida ma come è meglio creare la struttura della tabella per ottenere lo scopo? Ad es: ID | Nome | Cognome | Data e Ora | segni particolari | Ecc.. e ogni volta che viene strisciata la tessera vado a fare un "append" al campo Data e Ora dell'utente? Può essere corretto? Meglio separare ingresso e uscita? tipo cosi: ID | Nome | Cognome | Data e Ora Ingresso | Data e Ora uscita | E' dentro? | segni particolari | Ecc.. Ci sono altri modi? Ad esempio per sapere il tempo di permanenza di un utente dovrei fare le differenze tra tempi di ingresso e uscita ma devo prevedere che una persona dimentichi di strisciare in ingresso o in uscita... e le cose si complicano. Avete consigli? Grazie Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] info su db
Il 05/03/2014 17:21, Daniele Varrazzo ha scritto: Dovresti studiare qualcosa di molto elementare sui database: non puoi replicare informazioni su nome e cognome ad ogni strisciata, altrimenti è un log non relazionale, tanto vale tu lo scriva in un file. Le informazioni sugli utenti e le strisciate devono essere in due tabelle diverse. Separare nome è cognome è un'idea regolare, ma un po' limitata (ho sempre l'esempio del mio collega che non ha il cognome). Avere sia data ingresso che data uscita nello stesso record è giustissima: se un record rappresenta un periodo devono essere riportati sia inizio che fine, usare "il record di prima" come inizio porta a complicazioni terribili. L'informazione "è dentro" può essere dedotta dal fatto che una presenza abbia la data uscita nulla. Peraltro un utente non è collegato ad una lettura: un tag lo è, quindi secondo me dovresti avere come minimo: Utente: id, nome, cognome, indirizzo ecc.. Tag: id (del db, forse non necessario), identificativo (quello che il lettore legge), emesso il, ritirato il, motivo del ritiro ecc. Utente per tag: quale utente, quale tag, da quando l'ha avuto, fino a quando l'ha avuto. Lettura: id, quale tag, quale lettore, a che ora. Presenza: id lettura in, id lettura out. Lettore: id, ...tutte le informazioni che servono Nota che una lettura è un evento imprescindibile: quella cosa è successa. Una "presenza" è una policy: mette in relazione due letture nel caso più normale ma potrebbero succedere cose strane: tipo uno che entra ed esce in modo imprevisto (in barella? o semplicemente il lettore era rotto?) per cui mi sembra giusto separare le Letture (da registrare) dalle Presenze (da ricostruire). Potresti anche avere quello che entra, passa il tag a quello dietro e quello entra anche lui: è vietato da una policy, non dalla fisica Grazie a tutti delle risposte, non ho risposto subito perché ho passato il pomeriggio a studiare ;) Ho capito che devo fare svariate tabelle collegate tra loro e che contengano tutti i dati. Intanto farò qualche prova poi ritornerò con le domande. Ciao Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Struttura dati per griglia interattiva
Il 19/03/2014 15:58, Balan Victor ha scritto: Devo realizzare una griglia interattiva, in cui ad ogni click del mouse cambi lo stato della cella da 0 a 1 (ad esempio), e mi conti quante celle sono a 1 sia nella riga che nella colonna. Magari dico cavolate ma io, se i valori della griglia fossero solo numerici, punterei ad un array numpy. griglia=np.zeros((righe,colonne)) def click(x,y): griglia[x,y]=1-griglia[x,y] #considerando il ciclo tra 0 e 1 sumx=griglia[x,:].sum() sumy=griglia[:,y].sum() Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Argomenti del giorno
Il 15/04/2014 10:47, Marco Ippolito ha scritto: Ma è un caso che ci sono alcune discussioni su problematiche >caratteriali degli utenti, oppure è la norma? Ciao ad entrambi. Direi che non è per nulla la norma... anzi per mia esperienza questa è una lista molto bella e tollerante. Siate fiduciosi ;) Ciao Matteo P ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] incorporare codice open in un progetto (linee guida)
Ciao a tutti, ho un po' di programmini scritti in parte da me e in parte con incorporato codice open (GPL) trovato qui e li. Come posso ripubblicare il tutto? Come si mettono le attribuzioni? Ad esempio, ho utilizzato parte di uno script per inkscape con questa intestazione: ''' Copyright (C) 2007 Aaron Spike (aaron @ ekips.org) Copyright (C) 2007 Tavmjong Bah (tavmjong @ free.fr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version." Come posso pubblicare i miei progetti senza violare nessun diritto? Grazie Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] licenza sw riscritto
Ciao a tutti, ho riscritto in python un software open-source (java). Naturalmente il codice è parecchio diverso ma alcune parti (formule utilizzate per i calcoli, funzioni, variabili) sono uguali e prese quasi pari-pari dal sw originale. Come si si deve regolare con la licenza in questi casi? La licenza originale è MIT. Posso mettere la licenza GPL v2 o v3 nominando l'autore originale nell'intestazione? Grazie M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] gui e seriale in contemporanea
Ciao a tutti, ho un problema che non riesco a risolvere bene. Ho una semplice applicazione che deve visualizzare le stringhe che arrivano da una seriale (ttyUSB0 sono su linux). Non riesco a fare in modo che ci sia serial.readline() sempre attivo "sotto" all'interfaccia grafica e che quando arriva qualcosa venga eseguita una funzione specifica. Sto usando le GTK3 In particolare se resto in ascolto sulla porta seriale, l'interfaccia si "freeza" e non mi lascia fare altro. Cosa mi consigliate di fare? Devo usare i thread? Ciao Grazie Matteo P ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] gui e seriale in contemporanea
Il 04/08/2014 15:08, Marco Giusti ha scritto: thread o pattern asincrona. Normalmente ti consiglierei di utilizzare un pattern asincrono ma vista la semplicità del programma, mi sento di consigliarti i thread. Ok. Vediamo se ho capito bene... In un thread metto la classe della gui e in un altro la lettura della seriale e poi passo i dati da un thread all'altro? Il passaggio dei dati da un thread all'altro genera degli eventi che posso usare per richiamare delle funzioni? Grazie dei consigli Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] gui e seriale in contemporanea
Il 04/08/2014 18:18, Marco Giusti ha scritto: Questo fa' sì che non appena il main loop non ha più niente da fare, chiama la funzione "do_something_with_the_line". Ciao grazie del suggerimento. Sto provando in vari modi ma la situazione migliore che ho ottenuto è quella del codice sotto: Funziona (stampa la riga che arriva dalla seriale) se continuo a far fare qualcosa alla GUI altrimenti no. Ho provato a forzare con cose tipo: while gtk.events_pending(): gtk.main_iteration() Ma non ho ottenuto miglioramenti. Avete suggerimenti? import gtk import sys import threading import serial #import gtk.glade import glib class Window: def __init__(self): builder = gtk.Builder() builder.add_from_file("gui.glade") self.win = builder.get_object("win") self.win.connect("destroy", self.exit) self.ssbutton=builder.get_object('ssbutton') self.ssbutton.connect('clicked',self.on_ssbutton_clicked) self.text=builder.get_object('testo') self.text.set_text("CIAO") self.title=builder.get_object('title') self.title.set_text("test") self.win.show_all() def main(self): gtk.main() def exit(self,widget,data=None): print 'quit' gtk.main_quit() sys.exit() def on_ssbutton_clicked(self,event): print str(self.ssbutton.get_active()) class Thread1 (threading.Thread): def __init__(self, threadID, name): threading.Thread.__init__(self) self.threadID = threadID self.name = name def run(self): win = Window() win.main() class Thread2 (threading.Thread): def __init__(self, threadID, name): threading.Thread.__init__(self) self.threadID = threadID self.name = name def stampa(self,riga): print riga def run(self): self.ser=serial.Serial("/dev/ttyACM0",9600) while True: self.a=self.ser.readline() if self.a!="": glib.idle_add(self.stampa, self.a) while gtk.events_pending(): gtk.main_iteration() thread1 = Thread1(1, "GUI") thread2 = Thread2(2, "Serial") thread1.start() thread2.start() Grazie Matteo P ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] gui e seriale in contemporanea
Il 05/08/2014 16:25, Marco Giusti ha scritto: Dici di usare le gtk3 e non le usi. Hai ragione... ma ho cambiato in corso d'opera perchè mi è sembrato di capire che fosse più semplice con le gtk2 Ti suggerisco di usare idle_add non lo usi. questa però l'ho usata ;) "glib.idle_add(self.stampa, self.a" Adesso ti allego un "canovaccio", vediamo se così va' meglio. Grazie mille mi sarà utilissimo... provo e vi faccio sapere. Ciao M ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] gui e seriale in contemporanea
Il 05/08/2014 16:25, Marco Giusti ha scritto: vediamo se così va' meglio. HO modificato il codice così... import time import threading import serial import gtk import gobject class Quit(Exception): pass class Gui: def __init__(self, quit): self.quit = quit win = gtk.Window() win.connect("destroy", lambda w: self.exit()) self.textbuffer = gtk.TextBuffer() textview = gtk.TextView(self.textbuffer) textview.set_editable(False) sw = gtk.ScrolledWindow() sw.add(textview) win.add(sw) win.set_default_size(300, 200) win.show_all() def exit(self): self.quit.set() gtk.main_quit() def add_text(self, text): enditer = self.textbuffer.get_end_iter() self.textbuffer.insert(enditer, text) class Thread2 (threading.Thread): def __init__(self, name, gui, quit): threading.Thread.__init__(self, name=name) self.__gui = gui self.__quit = quit def run(self): self.ser=serial.Serial("/dev/ttyACM0",9600) while True: line = self.ser.read() gobject.idle_add(self.__gui.add_text, line) if __name__ == "__main__": gobject.threads_init() quit = threading.Event() gui = Gui(quit) t = Thread2("Serial", gui, quit) t.start() gtk.main() e funziona bene!! Grazie mille. Provo a studiarmi un po il codice... perché ci sono delle cose che non capisco bene. A breve ci risentiremo con nuove domande temo. Ciao e grazie ancora. Matteo. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] gui e seriale in contemporanea
Il 05/08/2014 22:57, Marco Giusti ha scritto: Ero tentato di spiegarti passo passo il codice ma ho cambiato idea. Un libro che ho studiato iniziava con questo incipit, qui parafrasato: "Con questo libro non voglio sollevare lo studente dal dover pensare, ma piuttosto incoraggiarlo a pensare autonomamente." Concordo Ti rimando ad una faq[1] molto utile. mi hai messo il riferimento ma non il link... potresti inviarmelo? Grazie Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Il pitone e la robotica
Ma ho scritto in ML perché mi pare molto positivo poter condividere idee e esperienze...per cui se qualcuno ha già usat questi o altri strumenti...si faccia sotto :-) io sto valutando questa board: http://micropython.org/ Comperata ma non testata a fondo... il tempo è quello che è! Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Nuova board
Ciao, magari a qualcuno interessa... a me piace come idea. https://www.kickstarter.com/projects/wipy/the-wipy-the-internet-of-things-taken-to-the-next?ref=thanks Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Nuova board
Il 12/05/2015 10:56, Guido Dassori ha scritto: Bella! Adoro! Spero costi meno della pyboard, il cui limite maggiore è proprio il prezzo. Beh dai... 27€ con wifi non è male HIMO. Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] migliorare lo stile
Ciao a tutti, programmo da un po' con python ma, anche dopo svariate applicazioni sia per lavoro che per uso personale sento la mancanza di uno "stile" di programmazione. Probabilmente la cosa è dovuta anche al fatto che, da ingegnere, quando le cose funzionano il resto è secondario. Avendo imparato da autodidatta a programmare non capisco bene se la "struttura" che do' ai programmi è decente o no? Ho letto e cerco di mettere in pratica la PEP8 per quanto riguarda code style ma la ma domanda riguarda più la struttura di file e directory e cosa mettere dove... non so se sto riuscendo a spiegarmi. Ad esempio: ho fatto dei software funzionanti in cui tutto era nello stesso file (GUI, elaborazione dati, visualizzazioni, comunicazione con device ecc...) e software in cui dal "main.py" richiamavo come moduli una miriade di file esterni .py che contenevano solo una piccola parte del codice. LA domanda è appunto se esiste una "condotta" anche solo indicativa o il layout del sowtware dipende unicamente dal programmatore? Potreste in caso suggerirmi delle risorse che voi avete trovato utili in tal senso? Grazie mille CIao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] pytest e classi
Ciao, sto iniziando ad usare pytest. Probabilmente mi sto perdendo in un bicchier d'acqua ma ho grossi problemi con il passaggio di parametri alle funzioni di test. Faccio un esempio che forse è più facile Ipotizziamo un file (xxx.py) fatto così: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np def plusone(x): return x+1 class CC(): self.a = 2 self.b = 4 self.c = 5 def somma(self): return self.a+self.b+self.c somma() --- Come faccio a testare la funzione somma? L'unico modo che ho trovato è stato quello di cambiare la funzione della classe così: def somma(self,a,b,c): self.a=a self.b=b self.c=c return self.a+self.b+self.c somma(CC,self.a,self.b,self.c) ma mi sembra una complicazione inutile. Ho un file esterno per richiamare tutti i test_xxx.py fatto così: from xxx import * from xxx import CC def test_somma(): assert somma(2,3,3)==8 Il test funziona ma non mi sembra proprio il modo giusto di operare Potreste darmi qualche dritta su come fareste voi? Come posso testare la funzione somma come scritta nel file originale? Grazie Ciao Matteo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] pytest e classi
Il 26/10/2015 18:56, Manlio Perillo ha scritto: Io non vedo il senso di quello che vuoi fare... Ok scusate... forse riesco a chiarire! se ho questo codice (pt.py): #!/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np def plusone(x): return x+1 class CC(): def __init__(self): self.a = 2 self.b = 4 self.c = 5 def somma(self): return self.a+self.b+self.c def test_somma(): assert somma()==11 if __name__=="__main__": tt=CC() print(tt.somma()) se do il comando: py.test-3 pt.py pytest non trova nessun test da fare! se richiamo il test da un file esterno (test_pt.py) in questo modo: from pt import CC def test_somma(): CC.a=2 CC.b=4 CC.c=5 assert CC.somma(CC)==11 il test funziona. Ma è il modo giusto di passare i parametri alla funzione di test? Spero di non aver fatto ulteriore confusione! Grazie Ciao M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] pytest e classi
Il 26/10/2015 20:02, Manlio Perillo ha scritto: test_somma **non** va messo nel modulo principale, ma nel modulo di test. Ovvio che non lo trova. Laggi la documentazione di pytest per vedere come vengono trovate le funzioni di test. OK! E' l'unico modo di fare unit test. Il problema è che quel codice è sbagliato; non è il modo corretto di usare le classi! Il modo corretto è: def test_somma(): cc = CC(2, 4, 5) assert cc.somma() == 11 Chiaro! Grazie M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] pytest e classi
Il 26/10/2015 21:31, Manlio Perillo ha scritto: Un ultimo consiglio. Per testare funzioni come somma di solito è preferibile usare una tabella con l'input e l'output corretto; ad esempio: Fatto! grazie Ora però ho un altro problema che non riesco a risolvere. Riporto l'esempio di prima con il nuovo problema. #!/usr/bin/env python3 # -*- coding: utf-8 -*- class CC(): def __init__(self): self.a = 2 self.b = 4 self.c = 5 def menouno(self,x): return x-1 def somma(self): return self.menouno(self.a+self.b+self.c) if __name__=="__main__": tt=CC() print(tt.somma()) la somma in questo caso fa 10 Il mio file di test ora è così: from pt import CC def test_somma(): CC.__init__(CC) assert CC.somma(CC)==10 Ma in questo caso self.menouno da errore perchè riceve un solo parametro (dice che manca la x) Se nel file metto "return self.menouno(self, self.a+self.b+self.c)" viene eseguito il test ma non va più il programma e viceversa! Ho cercato nella documentazione ma non ho ancora trovato una soluzione. Grazie per l'aiuto M. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] pytest e classi
Il 27/10/2015 13:40, Manlio Perillo ha scritto: Ti ho detto che non devi usare la classe in questo modo! https://docs.python.org/2/tutorial La classe la devi*instanziare*. Pian piano si impara Grazie dell'aiuto M ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Problemi di deploy di web app su heroku
Ciao a tutti, vi chiedo aiuto perchè sto riscontrando problemi a fare il deploy di una web app flask su heroku. Credo che il problema stia nella creazione del virtual env su heroku. L'app che ho costruito fa uso di varie librerie, tutte tranne una installabili tramite pip. Una invece, PyOCC (porting per python di OpenCascade), non sono riuscito ad installarla ne con pip ne compilando i sorgenti. Fortunatamente ho trovato un pacchetto conda già pronto e ho portato avanti tutto lo sviluppo dell'app in un conda env (pensando non vi fosse grande differenza con venv). Adesso però per fare il deploy su heroku ho scoperto che bisogna generare da conda un requirements.txt che poi viene usato dallo script di heroku per creare l'ambiente (usando venv se non sbaglio). Visto che non ne vengo a capo e il deploy si "rompe" sempre (penso perchè pip non riesce ad installare pyOCC), ho pensato di copiare la libreria OCC dall'environment conda alla mia cartella di progetto in modo da portarla dentro heroku come sorgente. Naturalmente in locale tutto funziona bene. Non so se ho spiegato abbastanza bene la situazione ma arrivo alle domande: 1) Ho capito bene? heroku usa venv? non posso usare un conda env in heroku giusto? 2) Se volessi spostare una libreria dall'ambiente conda alla cartella locale del progetto c'è un modo per farlo? come posso fare a importare OCC in modo corretto? 3) Ho provato a copiare la cartella OCC da conda in locale e cambiare tutti gli import per far puntare alla nuova cartella ma ottengo "segfault". Ipotizzo che sia dovuto al fatto che è un porting da C++. Idee? 4) avete altri suggerimenti? E' la mia prima flask app un po' articolata e non sono molto esperto. Grazie per ogni aiuto. Ciao Matteo ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi di deploy di web app su heroku
Ciao Marco, intanto grazie mille per le tue risposte. Ieri sera dopo aver girovagato un bel po' su internet ero arrivato alla conclusione di dover creare un whl. Ho passato qualche ora a provare, anche utilizzando il tool conda-press (che dovrebbe creare il whl in automatico), ma senza alcun risultato. Effettivamente, come dici tu temo che creare il whl non sia facile/possibile. Non ho idea se si possa compilare direttamente su heroku ma indagherò. Purtroppo questa libreria è indispensabili per l'app e temo non ci siano sostituti validi. Proverò ancora a risolvere, Ciao Il 10-Jan-23 9:56, Marco Giusti ha scritto: E' questo il pacchetto che devi installare [1]? Guardando alle istruzione di installazione [2], non credo che sia possibile create un file whl, quindi cercherei di risolvere la compilazione del pacchetto dentro Heroku stesso. [1]https://github.com/tpaviot/pythonocc-core [2]https://github.com/tpaviot/pythonocc-core/blob/master/INSTALL.md ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi di deploy di web app su heroku
Grazie Federico, mi sembra che possa essere la soluzione che stavo cercando anche se mi pare un po' complesso da fare. Nei prossimi giorni provo e poi vi faccio sapere. Grazie mille ancora Ciao Matteo Il 11-Jan-23 9:50, Federico Fissore ha scritto: Ciao Non ho mai usato Heroku, ma vedo che supportano il deploy di immagini docker. Se usare docker è un'opzione per voi, allora potete deployare un'immagine con le dipendenze necessarie a compilare la libreria, le librerie, e il vostro codice python. Se funziona, potete poi ottimizzare usando una multi-stage build https://docs.docker.com/build/building/multi-stage/ : 1. nella prima parte, installate gcc e le librerie, dicendo a pip di salvare le wheels in una cartella 2. nella seconda, installate le librerie partendo dalle wheels in quella cartella Noi facciamo così in un paio di servizi che usano librerie con parti native da compilare: la build è lenta, ma il risultato è un'immagine docker snella e minimale ciao federico___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi di deploy di web app su heroku
Buongiorno a tutti, dopo svariate vicissitudini con docker, gunicorn e heroku, sono riuscito a fare il deploy della mia app. Per futura memoria una delle cose che mi ha fatto perdere più tempo è legata a gunicorn. In particolare il deploy va fatto lanciando il comando: gunicorn app:app -b 0.0.0.0:$PORT Molte guide online suggeriscono il deploy impostando una porta fissa tipo 0.0.0.0:5000 ma questo non permette ad heroku di fare il binding delle porte. Magari prima o poi serve anche a qualcun altro Grazie mille a tutti dell'aiuto. Ciao matteo ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] modo furbo per trovare pattern differenti in una stringa
Ciao a tutti, è da un po' che non scrivo. Vi chiedo aiuto perchè sto cercando di leggere delle coordinate da un file Gcode. Un esempio del testo da parsare è: ;LAYER:1 ;MESH:untitled.stl G0 F7200 X1298 Y1798 Z4 ;TYPE:WALL-OUTER G1 F1800 X702 Y1798 E1494.81223 G1 X702 Y1202 E2242.21834 G92 E0 G1 X1298 Y1202 E747.40611 G1 Y1798 X1298 E1494.81223 ;TIME_ELAPSED:177.752007 ;CHANGE; ;LAYER:2 ;MESH:untitled.stl G0 F7200 X1298 Y1798 Z6 ;TYPE:WALL-OUTER G1 F1800 X702 Y1798 E2242.21834 G92 E0 G1 X702 Y1202 E747.40611 non ho grossi problemi ad effettuare un parsing corretto ma lo sto facendo con vari if, elif, case, ecc. cosa che non mi piace molto. Stavo provando ad utilizzare le regex ma non sto riuscendo a fare quello che voglio (in modo pulito) ovvero identificare le coordinate X, Y e Z anche se in alcuni casi hanno posizioni invertite. Vorrei anche attribuire un nome al gruppo identificato in modo da usarlo come dizionario. Stavo usando alcuni pattern tipo ".*Z(?P\d+[.]?\d*)" che vanno bene per individuare le coordinate di un asse ma capita che le righe contengano x y e z oppure solo Z oppure solo x e y. Importante, in alcuni casi potrebbero essere anche in ordine differente tipo z y e x. Per ora i numeri dopo E e F posso trascurarli ma vi chiederei aiuto per riuscire ad ottenere le coordinate da ogni riga. se tutte le righe rispettassero lo stesso pattern non avrei problemi ma non so come affrontare soprattutto il problema di avere pattern diversi in ordine (quasi) random. Spero di essere stato abbastanza chiaro. Grazie a tutti Matteo ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] comportamento def async
Ciao, vorrei leggere lo stato di un dispositivo ewelink (sonoff) tramite script ma ricevo un comportamento che non capisco. Se faccio uno script isolato importewelink fromewelinkimportClient, DeviceOffline @ewelink.login('Password', 'em...@email.eu') asyncdefask_status(client: Client): device= client.get_device('1') try: print(device.state.value) exceptDeviceOffline: print("Device is offline!") ottengo esattamente quello che voglio ovvero il print mi dice se il dispositivo è on, off o offline. ho provato ad integrare la stessa funzione in uno script un po' più articolato per comunicare con un bot telegram. fromtelegramimportUpdate fromtelegram.extimportApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters fromcredentialsimportTOKEN importewelink fromewelinkimportClient, DeviceOffline @ewelink.login('Password', 'em...@email.eu') asyncdefask_status(client: Client): device= client.get_device('1') try: print(device.state.value) exceptDeviceOffline: print("Device is offline!") asyncdefstart(update: Update, context: ContextTypes.DEFAULT_TYPE): awaitcontext.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!") asyncdefcheck(update: Update, context: ContextTypes.DEFAULT_TYPE): awaitcontext.bot.send_message(chat_id=update.effective_chat.id, text=ask_status) if__name__== '__main__': application= ApplicationBuilder().token(TOKEN).build() start_handler= CommandHandler('start', start) check_handler= CommandHandler('check', check) application.add_handler(start_handler) application.add_handler(check_handler) application.run_polling() Il bot funziona (è un po' più complicato di così) ma quando chiamo "ask_status" mi restituisce sempre lo stato che aveva il dispositivo quando faccio partire il bot. Come posso fare per forzare l'esecuzione di ask_status ogni volta che richiamo la funzione check? Cosa mi sto perdendo? Grazie a chi mi può dare un suggerimento Matteo ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python