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, )
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()