On Thu, Jul 30, 2020 at 01:51:10PM +0200, Markus Armbruster wrote:
> Daniel P. Berrangé <[email protected]> writes:
>
> > modify them so that we can load the
> > files straight into the python intepretor as code, and not parse
> > them as data. I feel unhappy about treating data as code though.
>
> Stress on *can* load. Doesn't mean we should.
>
> Ancient prior art: Lisp programs routinely use s-expressions as
> configuration file syntax. They don't load them as code, they read them
> as data.
>
> With Python, it's ast.parse(), I think.
Yes, that could work
> > struct: ImageInfoSpecificQCow2
> > data:
> > compat: str
> > "*data-file": str
> > "*data-file-raw": bool
> > "*lazy-refcounts": bool
> > "*corrupt": bool
> > refcount-bits: int
> > "*encrypt": ImageInfoSpecificQCow2Encryption
> > "*bitmaps":
> > - Qcow2BitmapInfo
> > compression-type: Qcow2CompressionType
> >
> >
> > Then we could use a regular off the shelf YAML parser in python.
> >
> > The uglyiness with quotes is due to the use of "*". Slightly less ugly
> > if we simply declare that quotes are always used, even where they're
> > not strictly required.
>
> StrictYAML insists on quotes.
I wouldn't suggest StrictYAML, just normal YAML is what pretty much
everyone uses.
If we came up with a different way to mark a field as optional
instead of using the magic "*" then we wouldn't need to quote
anything
> I hate having to quote identifiers. There's a reason we don't write
>
> 'int'
> 'main'('int', 'argc', 'char' *'argv'[])
> {
> 'printf'("hello world\n");
> return 0;
> }
>
> > struct: ImageInfoSpecificQCow2
> > data:
> > "compat": "str"
> > "*data-file": "str"
> > "*data-file-raw": "bool"
> > "*lazy-refcounts": "bool"
> > "*corrupt": "bool"
> > "refcount-bits": "int"
> > "*encrypt": "ImageInfoSpecificQCow2Encryption"
> > "*bitmaps":
> > - "Qcow2BitmapInfo"
> > "compression-type": "Qcow2CompressionType"
> >
> > With the use of "---" to denote the start of document, we have no trouble
> > parsing our files which would actually be a concatenation of multiple
> > documents. The python YAML library provides the easy yaml.load_all()
> > method.
>
> Required reading on YAML:
> https://www.arp242.net/yaml-config.html
I don't think this is especially helpful to our evaluation. You can write
such blog posts about pretty much any thing if you want to pick holes in a
proposal. Certainly there's plenty of awful stuff you can write about
JSON, and Python.
> Some of the criticism there doesn't matter for our use case.
Yeah, what matters is whether it can do the job we need in a way that is
better than what we have today, and whether there are any further options
to consider that might be viable alternatives.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|