Example #1
0
 def from_json(cls, json_value: str) -> Operation:
     op_str, scope_str, name, value = json.loads(json_value)
     return Operation(
         opcode=OpCode(op_str),
         scope=qltypes.ConfigScope(scope_str),
         setting_name=name,
         value=value,
     )
Example #2
0
File: ops.py Project: fantix/edgedb
def from_json(spec: spec.Spec, js: str) -> SettingsMap:
    base: SettingsMap = immutables.Map()
    with base.mutate() as mm:
        dct = json.loads(js)

        if not isinstance(dct, dict):
            raise errors.ConfigurationError(
                'invalid JSON: top-level dict was expected')

        for key, value in dct.items():
            setting = spec.get(key)
            if setting is None:
                raise errors.ConfigurationError(
                    f'invalid JSON: unknown setting name {key!r}')

            mm[key] = SettingValue(
                name=key,
                value=value_from_json_value(setting, value['value']),
                source=value['source'],
                scope=qltypes.ConfigScope(value['scope']),
            )

    return mm.finish()