Re: [Python] parsing config file

2013-12-14 Per discussione Pietro Battiston
Il giorno lun, 25/11/2013 alle 13.12 +0100, Pietro Battiston ha scritto:
Il giorno dom, 24/11/2013 alle 10.06 +0100, Dario Bertini ha scritto:
  [...]
  XML, Json, Yaml sono solo formati... non costringono a gestire il
file
  in un modo particolare
  
  https://pypi.python.org/pypi/ijson/
  
 
 
 O no... letto ora questa email... e giusto ieri mattina mi ero scritto

https://github.com/toobaz/redis-dump-load/blob/incremental_loading/incremental_json.py
 dopo avere letto inutilmente

http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json
 ...


Il giorno lun, 25/11/2013 alle 13.39 +0100, Dario Bertini ha scritto:
FWIW, era il primo risultato su google, cercando
 
 event parsing json python
 


Facendo giusto per curiosità un benchmark mi sono preso una piccola
rivincita... ed a quel punto ne ho fatto una mini libreria:
http://pietrobattiston.it/jsaone

ciao

Pietro

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


Re: [Python] parsing config file

2013-12-14 Per discussione Dario Bertini
congrats!

ho dato un'occhiata a json_load_test.py curioso di vedere il
benchmark, e però non c'è la stringa json da passargli in input

per rendere il tutto più riproducibile non sarebbe meglio aggiungere
anche il file che gli hai passato in input? (oppure c'era ma me lo
sono perso?)

(ovviamente, fare fuzz testing sarebbe la ciliegina sulla torta :P ...
avendone tempo sarei curioso di farlo, visto che con python non l'ho
mai fatto)


-- 
xmpp: berda...@gmail.com
bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP
gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just
for signing commits)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-12-14 Per discussione Pietro Battiston
Il giorno sab, 14/12/2013 alle 16.22 +, Dario Bertini ha scritto:
 congrats!
 
 ho dato un'occhiata a json_load_test.py curioso di vedere il
 benchmark, e però non c'è la stringa json da passargli in input
 

No, va usato con un file json esistente, i testi li ho fatti con un dump
di database redis con cui sto lavorando.

 per rendere il tutto più riproducibile non sarebbe meglio aggiungere
 anche il file che gli hai passato in input? (oppure c'era ma me lo
 sono perso?)
 

Sì, hai ragione... solo che era un file da 174 MB (e d'altra parte i
risultati mi interessano principalmente per file grossi).

Però potrei inserire del codice che genera al volo una stringa e la
passa come Stream(). TODO.

 (ovviamente, fare fuzz testing sarebbe la ciliegina sulla torta :P ...
 avendone tempo sarei curioso di farlo, visto che con python non l'ho
 mai fatto)

Sarei molto curioso anche io! Confesso che fino ad ora ho solo
verificato che il mio codice funzionasse su svariati json ben formati, e
trovasse lo stesso numero di elementi... insomma, nel setup.py ho messo
un meritatissimo 'Development Status :: 4 - Beta'  ;-)

ciao

Pietro

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


Re: [Python] parsing config file

2013-11-26 Per discussione Daniele Varrazzo

On 2013-11-25 15:34, Roberto Preziusi wrote:
Il giorno 22 novembre 2013 20:55, Daniele Varrazzo p...@develer.com 
ha

scritto:



Domanda mia: ve lo siete inventati voi quel formato?

Perchè state reinventando l'acqua calda: non dovreste scrivere un 
nuovo

parser se potete usare un linguaggio diverso. Quale? Ce ne sono a
tonnellate pronti per essere usati in Python:



No, non ce lo siamo inventati noi.
E' la conf di un device di rete (Juniper) che purtroppo bisogna 
parsare per

salvare questa conf su db..

Noto che è possibile avere output così o XML e quindi vi chiedevo 
quale
fosse il metodo piu' simpatico e veloce per parsare l'output senza 
troppe

complicazioni.


Se è del tutto indifferente per voi usare quel formato o xml, con xml 
ed etree non è un problema.



Adesso cerco una regexp buona per ora ho trovato solo questo modo qui 
con

sed:

sed -n '/address-set ABC_DEF/,/}' myfilename.conf

che non so come implementare con python.
idee?


Non c'è nessuna difficoltà: se si vuole parsarlo con le regexp bisogna 
solo conoscere le regexp. Non ci vogliono idee.



Poi provero' a vedere anche come farlo via xml usando qualche 
libreria in

python
e quando avro' imparato in entrambi i modi..  deciderò :)


Per quello usa questo: 
http://docs.python.org/2/library/xml.etree.elementtree.html


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


Re: [Python] parsing config file

2013-11-26 Per discussione Daniele Varrazzo

On 2013-11-24 08:32, Giovanni Porcari wrote:

Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo
p...@develer.com ha scritto:


Ma un file di configurazione: ma che ci vuole sax per parsare un 
paio di fetenti coppie chiave valore? Ancora a pensare solo per un 
secondo se un valore logico lo devi scrivere come 1, true oppure v? 
C'è di meglio, no?



db
  development implementation=postgres host=localhost port='5432'
password=mypassword user=myuser/



Io ad esempio lo leggo così:

config=Bag(myfile)
development_port=config('db.development?port')

'5432'


Esattamente quello che intendevo: lo leggi male. L'interfaccia è fica e 
comodissima, ne sono certo, ma l'informazione nel file è incompleta. 
Passa la stringa 5432 ad una funzione socket e quella esploderà:


 s.listen(('localhost', '5432'))
TypeError: an integer is required

Tra l'altro 5432 non è chiaramente una porta valida: è maggiore di 
65535:


 5432  65535
True

Ad un file di configurazione si chiedono poche cose. Tra queste secondo 
me sono abbastanza importanti:


- essere editabile a mano
- essere fortemente tipizzato

e ad xml mancano entrambe.

-- Daniele

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


Re: [Python] parsing config file

2013-11-26 Per discussione Manlio Perillo

On 26/11/2013 12:23, Daniele Varrazzo wrote:

[...]
Ad un file di configurazione si chiedono poche cose. Tra queste secondo
me sono abbastanza importanti:

- essere editabile a mano
- essere fortemente tipizzato



Il formato .ini, disponibile in ConfigParser, certamente non è 
tipizzato, dato che il tipo (bool, int, float, boolean) deve essere 
specificato da chi legge il file.


Gli unici formati di file che conosco in cui il tipo è manifesto (o 
meglio, in cui il tipo è specificato da chi scrive il file di 
configurazione) sono YAML e JSON.  La differenza tra YAML e JSON è che 
il primo è estendibile.


Volendo, anche XML può essere tipizzato, se ci attacchi uno schema.
Ma non sono a conoscenza (e non ho voglia di cercare, dato che non è 
molto pratico) di parser scritti in Python che leggono tale schema e 
convertono il testo XML nel tipo specificato.




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


Re: [Python] parsing config file

2013-11-26 Per discussione Giovanni Porcari

Il giorno 26/nov/2013, alle ore 12:23, Daniele Varrazzo p...@develer.com ha 
scritto:

 On 2013-11-24 08:32, Giovanni Porcari wrote:
 Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo
 p...@develer.com ha scritto:
 
 Ma un file di configurazione: ma che ci vuole sax per parsare un paio di 
 fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un 
 valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?
 
 db
  development implementation=postgres host=localhost port='5432'
 password=mypassword user=myuser/
 
 Io ad esempio lo leggo così:
 
 config=Bag(myfile)
 development_port=config('db.development?port')
 '5432'
 
 Esattamente quello che intendevo: lo leggi male. L'interfaccia è fica e 
 comodissima, ne sono certo, ma l'informazione nel file è incompleta. Passa la 
 stringa 5432 ad una funzione socket e quella esploderà:
 
 s.listen(('localhost', '5432'))
TypeError: an integer is required
 
 Tra l'altro 5432 non è chiaramente una porta valida: è maggiore di 65535:
 
 5432  65535
True
 
 Ad un file di configurazione si chiedono poche cose. Tra queste secondo me 
 sono abbastanza importanti:
 
 - essere editabile a mano
 - essere fortemente tipizzato
 
 e ad xml mancano entrambe.


Beh Daniele non volevo complicare le cose tirando in ballo anche la 
tipizzazione.
Ma hai ragione e infatti nel nostro uso abituale abbiamo modo di tipizzare
facilmente gli attributi usando il suffisso '::'+tipo mentre volendo tipizzare
il contenuto usiamo l'attributo 'riservato' _T.
In questo caso l'esempio completo sarebbe stato port=5432::L 
invece di port=5432.

Mi rendo conto che possono sembrare soluzioni 'acrocchiate' ma nella nostra
esperienza la leggibilità e la flessibilità sono buone e il formato
e semplice da spiegare e molto flessibile.

Usando un parser nostro possiamo usare tutti i tipi che vogliamo e il 
contenitore
che risulta è molto facile da usare e si mappa immediatamente ad un tree
in una pagina web. Quindi la pigrizia ci fa amare XML magari il dialetto nostro
che è per artigiani pigri ;)

G



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


Re: [Python] parsing config file

2013-11-26 Per discussione Giovanni Porcari

Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo 
manlio.peri...@gmail.com ha scritto:

 Gli unici formati di file che conosco in cui il tipo è manifesto (o meglio, 
 in cui il tipo è specificato da chi scrive il file di configurazione) sono 
 YAML e JSON.  La differenza tra YAML e JSON è che il primo è estendibile.


Il difetto maggiore che trovo in JSON è la mancata tipizzazione
di date e datetime.  Il che mi costringe a mettere degli Encoder
specializzati in python del tipo:

class JsonEncoderJS(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime.time):
return '%s::H' %str(obj)
elif isinstance(obj, Decimal):
return str(obj)
elif isinstance(obj, datetime.datetime):
return '%s::DH' %str(obj)
elif isinstance(obj, datetime.date):
return '%s::D' %str(obj)
return json.JSONEncoder.default(self, obj)

Quindi anche in questo caso usando la sintassi col ::.

Ho preso anche in esame serpent (https://pypi.python.org/pypi/serpent)
ma ormai avevo già le mie porcatine (porcatine ovvero da 'Porcari')
funzionanti e la pigrizia mi ha fatto restare col mio acrocchio XML.


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


Re: [Python] parsing config file

2013-11-26 Per discussione Manlio Perillo

On 26/11/2013 14:36, Giovanni Porcari wrote:


Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo 
manlio.peri...@gmail.com ha scritto:


Gli unici formati di file che conosco in cui il tipo è manifesto (o meglio, in 
cui il tipo è specificato da chi scrive il file di configurazione) sono YAML e 
JSON.  La differenza tra YAML e JSON è che il primo è estendibile.



Il difetto maggiore che trovo in JSON è la mancata tipizzazione
di date e datetime.


Si, questa è una limitazione abbastanza irritante.
Io infatti per i files di configurazione uso YAML, con un decoder custom 
che implementa diverse estensioni (come ad esempio, specificare un file, 
directory, un locale, un engine sqlalchemy, pkg resources, e così via).


Ecco un esempio:

paths:
  template: template !pkg_resource_path app:templates
  static: !pkg_resource_path app:static
  flatpages: flatpages !pkg_resource_path app:flatpages
  media: media !make_dir [media]
  tmp: tmp !make_dir [tmp]
  template_cache: template_cache !make_dir [*tmp, mako_modules]

defs:
  charset: charset utf-8

  lookup: lookup !make_template
directories: [*template, *flatpages]
module_directory: *template_cache
output_encoding: *charset
default_filters: [unicode, h, trim]

  engine: engine !make_engine
url: postgresql://x:y@localhost/z
echo: false

python:
  logger: !make_global_logger
filename: /tmp/app.log
level: DEBUG

Il decoder produce un dizionario a cui si può accedere, ad esempio, con:

conf['python.logger'], conf['paths.template'] e così via.

 [...]



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


Re: [Python] parsing config file

2013-11-25 Per discussione Pietro Battiston
Il giorno dom, 24/11/2013 alle 10.06 +0100, Dario Bertini ha scritto:
 2013/11/24 Daniele Varrazzo p...@develer.com:
  Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
  strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho
  scritto un sistema di importazione ed esportazione di una struttura enorme
  da postgres (la gestione contabile di un nostro programma, centinaia di mb
  al mese di partita doppia): per quello xml è stato perfetto. Struttura
  modellata come si deve:meglio che in Json. Json o Yaml mi avrebbero
  costretto a caricare tutto in memoria, con sax il caricamento è progressivo.
  Semplicemente lo strumento giusto.
 
 
 XML, Json, Yaml sono solo formati... non costringono a gestire il file
 in un modo particolare
 
 https://pypi.python.org/pypi/ijson/
 


O no... letto ora questa email... e giusto ieri mattina mi ero scritto
https://github.com/toobaz/redis-dump-load/blob/incremental_loading/incremental_json.py
dopo avere letto inutilmente
http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json
...

Pietro

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


Re: [Python] parsing config file

2013-11-25 Per discussione Dario Bertini
FWIW, era il primo risultato su google, cercando

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


Re: [Python] parsing config file

2013-11-25 Per discussione Roberto Preziusi
Il giorno 22 novembre 2013 20:55, Daniele Varrazzo p...@develer.com ha
scritto:


 Domanda mia: ve lo siete inventati voi quel formato?

 Perchè state reinventando l'acqua calda: non dovreste scrivere un nuovo
 parser se potete usare un linguaggio diverso. Quale? Ce ne sono a
 tonnellate pronti per essere usati in Python:


No, non ce lo siamo inventati noi.
E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare per
salvare questa conf su db..

Noto che è possibile avere output così o XML e quindi vi chiedevo quale
fosse il metodo piu' simpatico e veloce per parsare l'output senza troppe
complicazioni.

Adesso cerco una regexp buona per ora ho trovato solo questo modo qui con
sed:

sed -n '/address-set ABC_DEF/,/}' myfilename.conf

che non so come implementare con python.
idee?
Poi provero' a vedere anche come farlo via xml usando qualche libreria in
python
e quando avro' imparato in entrambi i modi..  deciderò :)

Grazie a tutti!
-- 
Preziusi Roberto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Simone Federici
usa XML in questo caso, lascia perdere le iregular exception
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Roberto Preziusi
Il giorno 25 novembre 2013 16:34, Roberto Preziusi 
roberto.prezi...@gmail.com ha scritto:

 sed -n '/address-set ABC_DEF/,/}' myfilename.conf


avevo perso un pezzo, il cmd è :

sed -n '/address-set ABC_DEF/,/}/p' myfilename.conf


bye
-- 
Preziusi Roberto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-25 Per discussione Pietro Battiston
Il giorno lun, 25/11/2013 alle 13.39 +0100, Dario Bertini ha scritto:
 FWIW, era il primo risultato su google, cercando
 
 event parsing json python

La parte event non mi era passata per la testa!

Pietro

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


Re: [Python] parsing config file

2013-11-25 Per discussione enrico franchi
2013/11/25 Roberto Preziusi roberto.prezi...@gmail.com


 No, non ce lo siamo inventati noi.
 E' la conf di un device di rete (Juniper) che purtroppo bisogna parsare
 per salvare questa conf su db..


Strettamente parlando non e' che *devi* parsarlo per metterlo sul DB.
A seconda di quello che vuoi farci, potresti semplicemente sbatterlo nel DB.
E.g., se il tuo scopo e' versionare la configurazione o essere in grado di
replicarla, la faccenda basta.

Devi vedere quanto ti costa fare un parsing vero e proprio (e gestire l'in
e out dal db -- e.g., opzioni nella conf cui non hai pensato quando fatto
lo schema e compagnia).

Ecco diciamo che io, fino a prova contraria lo schiafferei nel db cosi'
come e'.

Leggo pero' che vuoi proprio processarlo. Direi che un parser e' la cosa
corretta.
Non ci vuole molto per scriverlo, il linguaggio *sembra* molto semplice.

Guarda anche se qui non ci fosse un parser bello e pronto da qualche parte:

https://pypi.python.org/pypi/junos-multi-command/

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


Re: [Python] parsing config file

2013-11-24 Per discussione Giovanni Porcari

Il giorno 24/nov/2013, alle ore 02:33, Daniele Varrazzo p...@develer.com ha 
scritto:

 On 2013-11-23 06:30, Giovanni Porcari wrote:
 Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
 matteo.bosc...@boscolini.eu ha scritto:
 
 Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
 5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato 
 apprezzabile.
 +1
 
 
 Povero XML, a me sembra tanto comodo e facile da usare.
 Ma sarà perché son vecchio ;)
 
 Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono 
 strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho 
 scritto un sistema di importazione ed esportazione di una struttura enorme da 
 postgres (la gestione contabile di un nostro programma, centinaia di mb al 
 mese di partita doppia): per quello xml è stato perfetto. Struttura modellata 
 come si deve:meglio che in Json. Json o Yaml mi avrebbero costretto a 
 caricare tutto in memoria, con sax il caricamento è progressivo. 
 Semplicemente lo strumento giusto.
 
 Ma un file di configurazione: ma che ci vuole sax per parsare un paio di 
 fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un 
 valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?
 
 -- Daniele
 


Posso essere d'accordo su tutto.

Infatti il mio commento era più che altro relativo al +1 di Matteo.
Il mio punto di vista è che se comunque usi già XML in altre parti di un 
progetto
e hai già gli strumenti e la consuetudine mentale, impiegare XML anche per
compiti banali non è poi così male.

Se ad esempio all' interno di un file di configurazione trovi :

db
  development implementation=postgres host=localhost port='5432' 
password=mypassword user=myuser/
  external implementation=postgres host=myhost.myorg.my port='5432' 
password=mypassword2 user=myuser2/
  production implementation=oracle host=rich.org.com port='11211' 
password=orac user=oracser/
/db

a me sembra abbastanza compatto e leggibile. 

Poi dipende da come lo leggi. 

Io ad esempio lo leggo così:

config=Bag(myfile)
development_port=config('db.development?port')
 '5432'

ma anche:
configured_db=config['db'].keys()
 ['development','external','production']


Quindi direi che, come sempre, tutto è relativo alle personali
esperienze, preferenze, idiosincrasie e agli strumenti che si usano :)

Ciao

G




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


Re: [Python] parsing config file

2013-11-24 Per discussione Dario Bertini
2013/11/24 Daniele Varrazzo p...@develer.com:
 Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
 strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa ho
 scritto un sistema di importazione ed esportazione di una struttura enorme
 da postgres (la gestione contabile di un nostro programma, centinaia di mb
 al mese di partita doppia): per quello xml è stato perfetto. Struttura
 modellata come si deve:meglio che in Json. Json o Yaml mi avrebbero
 costretto a caricare tutto in memoria, con sax il caricamento è progressivo.
 Semplicemente lo strumento giusto.


XML, Json, Yaml sono solo formati... non costringono a gestire il file
in un modo particolare

https://pypi.python.org/pypi/ijson/

se questa è la miglior ragione per usare XML, mi sa che continuerò ad
evitarlo (tranne quando costretto) per mlto tempo :)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] parsing config file

2013-11-24 Per discussione Marco Beri
On 24 Nov 2013 02:33, Daniele Varrazzo p...@develer.com wrote:

 P.s. inviato col cellulare: perdonate il bottom posting e la
cancellazione delle parti non utili del messaggio.

Ahahahaha!!!

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


Re: [Python] parsing config file

2013-11-24 Per discussione Marco De Paoli
Il 24/nov/2013 02:33 Daniele Varrazzo p...@develer.com ha scritto:

 On 2013-11-23 06:30, Giovanni Porcari wrote:

 Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
 matteo.bosc...@boscolini.eu ha scritto:

 Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:

 5. XML se proprio ti diverti ad overingegnerizzare per nessun
risultato apprezzabile.

 +1


 Povero XML, a me sembra tanto comodo e facile da usare.
 Ma sarà perché son vecchio ;)


 Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
strumenti utili per certi compiti ed altri utili per altri. Pochi mesi fa
ho scritto un sistema di importazione ed esportazione di una struttura
enorme da postgres (la gestione contabile di un nostro programma, centinaia
di mb al mese di partita doppia): per quello xml è stato perfetto.
Struttura modellata come si deve:meglio che in Json. Json o Yaml mi
avrebbero costretto a caricare tutto in memoria, con sax il caricamento è
progressivo. Semplicemente lo strumento giusto.

 Ma un file di configurazione: ma che ci vuole sax per parsare un paio di
fetenti coppie chiave valore? Ancora a pensare solo per un secondo se un
valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, no?

In realtà c'è un altro caso d'uso ed è quello dei dati documentali.

Ossia xlm come markup-language semantico per un documento.

Mi pare anzi che questo obiettivo sia il primo per cui xml è nato.

Prima dell' xml c'era sgml da cui l'xml ha preso un sacco di concetti (es.
quello di dtd). Xml rispetto ad sgml ha introdotto una cosa fondamentale:
unicode. Cosa che ne ha decretato la rapida adozione nei sistemi
documentali in tutti i casi in cui si voleva un contenuto fortemente
slegato dalla formattazione. Da cui il concetto di xslt e la pubblicazione
in vari formati grazie ad un foglio di stile xsl.

È ancora pesantemente usato come formato di interscabio per traduttori
umani e sistemi automatici (es. Translation Memory) nelle forme xliff e tmx.

Usare invece xml come formato di scambio dati (anche non documentali) tra
applicativi è stata un idea successiva legata a soap e xml-rpc.

Mi fermo qui perché sto andando ot. Infatti la domanda iniziale non si
riferisce agli ambiti che ho descritto. Era giusto per condividere i miei
due cents sulle ragioni d'essere dell'xml.

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


Re: [Python] parsing config file

2013-11-24 Per discussione Manlio Perillo

On 24/11/2013 02:33, Daniele Varrazzo wrote:

[...]
Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono
strumenti utili per certi compiti ed altri utili per altri. Pochi mesi
fa ho scritto un sistema di importazione ed esportazione di una
struttura enorme da postgres (la gestione contabile di un nostro
programma, centinaia di mb al mese di partita doppia): per quello xml è
stato perfetto. Struttura modellata come si deve:meglio che in Json.
Json o Yaml mi avrebbero costretto a caricare tutto in memoria, con sax
il caricamento è progressivo. Semplicemente lo strumento giusto.



No, aspetta.
Qui non è colpa del formato.
E' colpa delle implementazioni del cavolo, che non permettono di fare 
operazioni efficienti.
Non mi sembra ci sia nulla, in JSON o YAML, che impedisca di 
implementare un parser/generatore incrementali.


La prima cosa che mi ha restituito google:
http://stackoverflow.com/questions/444380/is-there-a-streaming-api-for-json


 [...]

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


Re: [Python] parsing config file

2013-11-23 Per discussione Daniele Varrazzo

On 2013-11-23 06:30, Giovanni Porcari wrote:

Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo
matteo.bosc...@boscolini.eu ha scritto:


Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
5. XML se proprio ti diverti ad overingegnerizzare per nessun 
risultato apprezzabile.

+1



Povero XML, a me sembra tanto comodo e facile da usare.
Ma sarà perché son vecchio ;)


Io non sono di quelli chiusi contro una cosa a tutti i costi: ci sono 
strumenti utili per certi compiti ed altri utili per altri. Pochi mesi 
fa ho scritto un sistema di importazione ed esportazione di una 
struttura enorme da postgres (la gestione contabile di un nostro 
programma, centinaia di mb al mese di partita doppia): per quello xml è 
stato perfetto. Struttura modellata come si deve:meglio che in Json. 
Json o Yaml mi avrebbero costretto a caricare tutto in memoria, con sax 
il caricamento è progressivo. Semplicemente lo strumento giusto.


Ma un file di configurazione: ma che ci vuole sax per parsare un paio 
di fetenti coppie chiave valore? Ancora a pensare solo per un secondo se 
un valore logico lo devi scrivere come 1, true oppure v? C'è di meglio, 
no?


-- Daniele

P.s. inviato col cellulare: perdonate il bottom posting e la 
cancellazione delle parti non utili del messaggio.




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


[Python] parsing config file

2013-11-22 Per discussione Roberto Preziusi
Ciao,
avrei bisogno di effettuare il parsing di un file così composto:

...
   address-set ABC_DEF {
address ABC_PRO_1;
address BCD_PRO_IP2;
address AAA_ABC;
address FFF_CHCD;

   }
...

All'interno dello stesso file ho altri campi address-set con altri nomi
diversi da ABD_DEF

Vorrei creare una lista con dentro tutti gli address del mio address-set
address-list = [ABC_PRO_1, BCD_PRO_IP2, ... ]

Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se c'è
un modo veloce x farlo ?

Altra domanda:
sarebbe piu' facile effettuare la stessa operazione se avessi la possibiltà
di esportare questa conf in xml ?

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


Re: [Python] parsing config file

2013-11-22 Per discussione Marco De Paoli
Il giorno 22 novembre 2013 18:18, Roberto Preziusi 
roberto.prezi...@gmail.com ha scritto:

 Ciao,
 avrei bisogno di effettuare il parsing di un file così composto:

 ...
address-set ABC_DEF {
 address ABC_PRO_1;
 address BCD_PRO_IP2;
 address AAA_ABC;
 address FFF_CHCD;
 
}
 ...

 All'interno dello stesso file ho altri campi address-set con altri nomi
 diversi da ABD_DEF

 Vorrei creare una lista con dentro tutti gli address del mio address-set
 address-list = [ABC_PRO_1, BCD_PRO_IP2, ... ]

 Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se c'è
 un modo veloce x farlo ?

 Altra domanda:
 sarebbe piu' facile effettuare la stessa operazione se avessi la
 possibiltà di esportare questa conf in xml ?


beh, decisamente. Se esporti in xml puoi andare di lxml con gli xpath,
iteri sugli elementi che ti interessano e prendi i valori. Punto.

Altrimenti con la struttura che hai accennato, mi sa che il modo più
semplice è usare regular-expression riga per riga però ti devi mantenere un
minimo di stato (es. sono dentro una struttura address-set, etc.)

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


Re: [Python] parsing config file

2013-11-22 Per discussione Daniele Varrazzo

On 2013-11-22 17:18, Roberto Preziusi wrote:

Ciao,
avrei bisogno di effettuare il parsing di un file così composto:

...
   address-set ABC_DEF {
address ABC_PRO_1;
address BCD_PRO_IP2;
address AAA_ABC;
address FFF_CHCD;

   }
...


Sembra abbastanza facile da fare con le espressioni regolari. La 
soluzione corretta è scrivere un parser con un generatore che parta 
dalla vostra grammatica (ply, pyparsing).



All'interno dello stesso file ho altri campi address-set con altri 
nomi

diversi da ABD_DEF

Vorrei creare una lista con dentro tutti gli address del mio 
address-set

address-list = [ABC_PRO_1, BCD_PRO_IP2, ... ]

Qualcuno sa dirmi se ci sono librerie in python che fanno questo o se 
c'è

un modo veloce x farlo ?

Altra domanda:



Domanda mia: ve lo siete inventati voi quel formato?

Perchè state reinventando l'acqua calda: non dovreste scrivere un nuovo 
parser se potete usare un linguaggio diverso. Quale? Ce ne sono a 
tonnellate pronti per essere usati in Python:


1. python stesso. Se il formato è Python basta importarlo per avere 
tutti gli oggetti, ed avete anche già pronti modularità (usando import), 
potete usare espressioni, variabili...


address_set(ABC_DEF,
address(ABC_PRO_1),
address(BCD_PRO_IP2),
...)

2. un file ini sembra più che sufficiente, non so se si possono fare 
ripetizioni. Il parser è nella stdlib.


[ABC_DEF]
address: ABC_PRO_1
address: BCD_PRO_IP2

3. YAML è facilissimo da editare a mano

4. JSON pure andrebbe più che bene, meno editabile di YAML ma il parser 
è nella stdlib.


sarebbe piu' facile effettuare la stessa operazione se avessi la 
possibiltà

di esportare questa conf in xml ?


5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato 
apprezzabile.



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


Re: [Python] parsing config file

2013-11-22 Per discussione Matteo Boscolo

Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
5. XML se proprio ti diverti ad overingegnerizzare per nessun 
risultato apprezzabile.

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


Re: [Python] parsing config file

2013-11-22 Per discussione Giovanni Porcari

Il giorno 23/nov/2013, alle ore 07:08, Matteo Boscolo 
matteo.bosc...@boscolini.eu ha scritto:

 Il 22/11/2013 20:55, Daniele Varrazzo ha scritto:
 5. XML se proprio ti diverti ad overingegnerizzare per nessun risultato 
 apprezzabile.
 +1
 

Povero XML, a me sembra tanto comodo e facile da usare.
Ma sarà perché son vecchio ;)

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