def merge(self, walk, base, head, schema, meta, objclass_menu=None, objClass='_default', **kwargs): if not walk.is_type(head, "object"): raise HeadInstanceError( "Head for an 'object' merge strategy is not an object", head) if objclass_menu is None: objclass_menu = {'_default': dict} objcls = objclass_menu.get(objClass) if objcls is None: raise SchemaError("objClass '%s' not recognized" % objClass, schema) if base.is_undef(): base = JSONValue(objcls(), base.ref) else: if not walk.is_type(base, "object"): raise BaseInstanceError( "Base for an 'object' merge strategy is not an object", base) base = JSONValue(objcls(base.val), base.ref) for k, v in head.items(): subschema = JSONValue(undef=True) # get subschema for this element if not schema.is_undef(): p = schema.get('properties') if not p.is_undef(): subschema = p.get(k) if subschema.is_undef(): p = schema.get('patternProperties') if not p.is_undef(): for pattern, s in p.items(): if re.search(pattern, k): subschema = s if subschema.is_undef(): p = schema.get('additionalProperties') # additionalProperties can be boolean in draft 4 if not p.is_undef() and walk.is_type(p, "object"): subschema = p base[k] = walk.descend(subschema, base.get(k), v, meta) return base
def merge(self, walk, base, head, schema, meta, objclass_menu=None, objClass='_default', **kwargs): if not walk.is_type(head, "object"): raise HeadInstanceError("Head for an 'object' merge strategy is not an object", head) if objclass_menu is None: objclass_menu = { '_default': dict } objcls = objclass_menu.get(objClass) if objcls is None: raise SchemaError("objClass '%s' not recognized" % objClass, schema) if base.is_undef(): base = JSONValue(objcls(), base.ref) else: if not walk.is_type(base, "object"): raise BaseInstanceError("Base for an 'object' merge strategy is not an object", base) base = JSONValue(objcls(base.val), base.ref) for k, v in head.items(): subschema = JSONValue(undef=True) # get subschema for this element if not schema.is_undef(): p = schema.get('properties') if not p.is_undef(): subschema = p.get(k) if subschema.is_undef(): p = schema.get('patternProperties') if not p.is_undef(): for pattern, s in p.items(): if re.search(pattern, k): subschema = s if subschema.is_undef(): p = schema.get('additionalProperties') # additionalProperties can be boolean in draft 4 if not p.is_undef() and walk.is_type(p, "object"): subschema = p base[k] = walk.descend(subschema, base.get(k), v, meta) return base
def merge(self, walk, base, head, schema, meta, **kwargs): if not walk.is_type(head, "object"): raise HeadInstanceError("Head for an 'object' merge strategy is not an object") if base.is_undef(): base = JSONValue({}, base.ref) else: if not walk.is_type(base, "object"): raise BaseInstanceError("Base for an 'object' merge strategy is not an object") base = JSONValue(dict(base.val), base.ref) for k, v in head.items(): subschema = JSONValue(undef=True) # get subschema for this element if not schema.is_undef(): p = schema.get('properties') if not p.is_undef(): subschema = p.get(k) if subschema.is_undef(): p = schema.get('patternProperties') if not p.is_undef(): for pattern, s in p.items(): if re.search(pattern, k): subschema = s if subschema.is_undef(): p = schema.get('additionalProperties') if not p.is_undef(): subschema = p.get(k) base.val[k] = walk.descend(subschema, base.get(k), v, meta).val return base
def merge(self, walk, base, head, schema, meta, **kwargs): if not walk.is_type(head, "object"): raise HeadInstanceError("Head for an 'object' merge strategy is not an object") if base.is_undef(): base = JSONValue({}, base.ref) else: if not walk.is_type(base, "object"): raise BaseInstanceError("Base for an 'object' merge strategy is not an object") base = JSONValue(dict(base.val), base.ref) for k, v in head.items(): subschema = JSONValue(undef=True) # get subschema for this element if not schema.is_undef(): p = schema.get('properties') if not p.is_undef(): subschema = p.get(k) if subschema.is_undef(): p = schema.get('patternProperties') if not p.is_undef(): for pattern, s in p.items(): if re.search(pattern, k): subschema = s if subschema.is_undef(): p = schema.get('additionalProperties') if not p.is_undef(): subschema = p base.val[k] = walk.descend(subschema, base.get(k), v, meta).val return base
def test_get(self): v = JSONValue({'a': 'b'}) va = v.get('a') self.assertTrue('b', va.val) self.assertEqual('#/a', va.ref)
def test_get_default(self): v = JSONValue({}) va = v.get('a') self.assertTrue(va.is_undef())
def test_get(self): v = JSONValue({"a": "b"}) va = v.get("a") self.assertTrue("b", va.val) self.assertEqual("#/a", va.ref)
def test_get_default(self): v = JSONValue({}) va = v.get("a") self.assertTrue(va.is_undef())
def test_get(self): v = JSONValue({'a': 'b'}) va = v.get('a') self.assertTrue('b', va.val) self.assertEqual('#/a', va.ref)