ipyvega icon indicating copy to clipboard operation
ipyvega copied to clipboard

Allow ``VegaLite`` to accept either dict or JSON string?

Open jakevdp opened this issue 9 years ago • 3 comments

This came up in our chat – I think it's a good idea.

Could look something like this:

class Vegalite(object):
    def __init__(self, spec):
        try:
            spec = json.loads(spec)
        except TypeError:
            pass
        if 'data' not in spec:
            raise KeyError('No data provided with spec')
        self.spec = utils.update(spec, DEFAULTS, overwrite=False)

Advantage is more flexible API & ability to out-source dataframe formatting stuff to Pandas; the disadvantage is that in some situations we'd add an extra string->dict->string cycle.

jakevdp avatar May 18 '16 22:05 jakevdp

Related question: are there any situations in which a valid Vega/Vegalite JSON string would be broken through doing spec = json.dumps(json.loads(spec))?

jakevdp avatar May 18 '16 22:05 jakevdp

Related question: are there any situations in which a valid Vega/Vegalite JSON string would be broken through doing spec = json.dumps(json.loads(spec))?

I can't think of anything that could cause issues.

domoritz avatar May 18 '16 22:05 domoritz

Another idea: I think it would make sense to let the Vegalite class take an optional data argument, that it would then roll into the dict/string spec (rather than having that part in an external function).

jakevdp avatar May 18 '16 22:05 jakevdp