Używam YAML jako format pliku konfiguracyjnego dla projektu Python.Dlaczego ten schemat nie jest poprawny dla Rx?
Ostatnio znalazłem Rx jako jedyny walidator schematu dostępny dla Pythona i YAML. : -/Kwalify współpracuje z YAML, ale tylko dla Ruby i Java. :(
Czytałem dokumentację brakuje przez cały dzień i po prostu nie może wydawać się, aby napisać poprawny schemat do reprezentowania mojego strukturę plików Pomoc
Mam następujący plik konfiguracyjny YAML.?
cmd:
exec: mycmd
aliases: [my, cmd]
filter:
sms: 'regex .*'
load:
exec: load
filter:
sms: 'load: .*$'
echo:
exec: echo %
Nie udaje mi się reprezentować struktury zagnieżdżonej, czego potrzebuję dla najbardziej zewnętrznego elementu (cmd, load i echo, w tym przypadku), aby być dowolnym ciągiem, który z kolei zawiera inne elementy. "Exec" jest ustalonym łańcuchem i wymaganym elementem, "aliasy" i "filtr" są również poprawione, ale powinny być opcjonalne, natomiast filtr ma inny zestaw wymaganych i opcjonalnych elementów. reprezentować to z Rx?
tej pory mam następujący schemat (w YAML), który Rx zawiedzie skompilować:
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
Testowanie to w ipython daje mi to:
/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'
co prowadzi mnie do wierzę "Nie mam gdzieś określenia" typ ". : -S
Jakieś pomysły?
Jestem dość zmęczony, walcząc z tym ... Czy jest jakiś inny sposób, w jaki mogę napisać schemat i użyć go do sprawdzenia poprawności plików konfiguracyjnych?
Dzięki z góry,
Ivan
Tak, to działa! Nigdy nie myślałem o używaniu // mapy w ten sposób; był zbyt skoncentrowany na typie // rec. Autor Rx, Ricardo Signes, uprzejmie przesłał mi pomocną odpowiedź, co do której pomyślałem, że udostępnię snipper każdemu, kto może mieć podobny problem w przyszłości: http://pastebin.com/ f13421133. Mam nadzieję, że mi to nie przeszkadza. Dzięki za odpowiedź, Daniel! Uratowałeś mój dzień! : D – imiric
Próbuję użyć tego modułu w moim projekcie, ale jak powiedział @imiric, dokumentacja nie jest przyjazna. Czy możesz podać przykładowy kod Pythona, który używa tego? – NI6