Sto usando YAML come formato di file di configurazione per un progetto Python.Perché questo non è uno schema valido per Rx?
Recentemente ho trovato Rx l'unico validatore di schema disponibile per Python e YAML. : -/Kwalify funziona con YAML, ma è solo per Ruby e Java. :(
Ho letto la documentazione manca tutto il giorno e proprio non riesco a scrivere uno schema valido per rappresentare la mia struttura di file Aiuto
ho il seguente file YAML di configurazione:.?
cmd:
exec: mycmd
aliases: [my, cmd]
filter:
sms: 'regex .*'
load:
exec: load
filter:
sms: 'load: .*$'
echo:
exec: echo %
Non riesco a rappresentare una struttura nidificata Ciò che voglio è che l'elemento più esterno (cmd, load ed echo, in questo caso) sia una stringa arbitraria che a sua volta contiene altri elementi. è una stringa fissa e un elemento richiesto, "alias" e "filtro" sono anch'essi corretti, ma dovrebbero essere facoltativi. Il filtro a sua volta ha un altro insieme di elementi obbligatori e facoltativi. rappresenta questo con Rx?
Finora ho il seguente schema (in YAML), che Rx non riesce a compilare:
type: //rec
required:
type: //rec
required:
exec: //str
optional:
aliases:
type: //arr
contents: //str
length: {min: 1, max: 10}
filter:
type: //rec
optional:
sms: //str
email: //str
all: //str
Testing questo IPython mi dà questo:
/Rx.py in make_schema(self, schema)
68 raise Error('invalid schema argument to make_schema')
69
---> 70 uri = self.expand_uri(schema["type"])
71
72 if not self.type_registry.get(uri): raise "unknown type %s" % uri
KeyError: 'type'
Il che mi porta a credere che non sto specificando "type" da qualche parte. : -S
Qualche idea?
Sono piuttosto stanco di combattere con questa cosa ... C'è un altro modo in cui posso scrivere uno schema e usarlo per convalidare i miei file di configurazione?
Grazie in anticipo,
Ivan
Sì, funziona! Non ho mai pensato di usare // mappa in questo modo; era troppo concentrato sul tipo // rec. L'autore di Rx, Ricardo Signes, mi ha gentilmente inviato una risposta utile, che ho pensato di condividere con qualcuno che potrebbe avere un problema simile in futuro: http://pastebin.com/ f13421133. Spero che non gli dispiaccia farlo. Grazie per la tua risposta, Daniel! Mi hai salvato la giornata! : D – imiric
Sto provando a utilizzare questo modulo nel mio progetto ma, come ha detto @imiric, la documentazione non è amichevole. Puoi condividere qualche esempio di codice Python che usi questo per favore? – NI6