def __init__(self, schema, strategies=(), objclass_def='dict', objclass_menu=None, validatorclass=Draft4Validator): """Create a new Merger object. schema -- JSON schema to use when merging. strategies -- Any additional merge strategies to use during merge. objclass_def -- Name of the default class for JSON objects. objclass_menu -- Any additional classes for JSON objects. validatorclass -- JSON Schema validator class. strategies argument should be a dict mapping strategy names to instances of Strategy subclasses. objclass_def specifies the default class used for JSON objects when one is not specified in the schema. It should be 'dict' (dict built-in), 'OrderedDict' (collections.OrderedDict) or one of the names specified in the objclass_menu argument. If not specified, 'dict' is used. objclass_menu argument should be a dictionary that maps a string name to a function or class that will return an empty dictionary-like object to use as a JSON object. The function must accept either no arguments or a dictionary-like object. validatorclass argument can be used to supply a validator class from jsonschema. This can be used for example to specify which JSON Schema draft version will be used during merge. """ self.schema = schema if hasattr(validatorclass, 'ID_OF'): resolver = LocalRefResolver.from_schema(schema, id_of=validatorclass.ID_OF) else: # jsonschema<3.0.0 resolver = LocalRefResolver.from_schema(schema) self.validator = validatorclass(schema, resolver=resolver) self.strategies = dict(self.STRATEGIES) self.strategies.update(strategies) self.objclass_menu = {'dict': dict, 'OrderedDict': OrderedDict} if objclass_menu: self.objclass_menu.update(objclass_menu) self.objclass_menu['_default'] = self.objclass_menu[objclass_def]
def __init__(self, schema, strategies=(), objclass_def='dict', objclass_menu=None, validatorclass=Draft4Validator): """Create a new Merger object. schema -- JSON schema to use when merging. strategies -- Any additional merge strategies to use during merge. objclass_def -- Name of the default class for JSON objects. objclass_menu -- Any additional classes for JSON objects. validatorclass -- JSON Schema validator class. strategies argument should be a dict mapping strategy names to instances of Strategy subclasses. objclass_def specifies the default class used for JSON objects when one is not specified in the schema. It should be 'dict' (dict built-in), 'OrderedDict' (collections.OrderedDict) or one of the names specified in the objclass_menu argument. If not specified, 'dict' is used. objclass_menu argument should be a dictionary that maps a string name to a function or class that will return an empty dictionary-like object to use as a JSON object. The function must accept either no arguments or a dictionary-like object. validatorclass argument can be used to supply a validator class from jsonschema. This can be used for example to specify which JSON Schema draft version will be used during merge. """ self.schema = schema if hasattr(validatorclass, 'ID_OF'): resolver = LocalRefResolver.from_schema(schema, id_of=validatorclass.ID_OF) else: # jsonschema<3.0.0 resolver = LocalRefResolver.from_schema(schema) self.validator = validatorclass(schema, resolver=resolver) self.strategies = dict(self.STRATEGIES) self.strategies.update(strategies) self.objclass_menu = { 'dict': dict, 'OrderedDict': OrderedDict } if objclass_menu: self.objclass_menu.update(objclass_menu) self.objclass_menu['_default'] = self.objclass_menu[objclass_def]
def __init__(self, schema, strategies=(), objclass_def='dict', objclass_menu=None): """Create a new Merger object. schema -- JSON schema to use when merging. strategies -- Any additional merge strategies to use during merge. objclass_def -- Name of the default class for JSON objects. objclass_menu -- Any additional classes for JSON objects. strategies argument should be a dict mapping strategy names to instances of Strategy subclasses. objclass_def specifies the default class used for JSON objects when one is not specified in the schema. It should be 'dict' (dict built-in), 'OrderedDict' (collections.OrderedDict) or one of the names specified in the objclass_menu argument. If not specified, 'dict' is used. objclass_menu argument should be a dictionary that maps a string name to a function or class that will return an empty dictionary-like object to use as a JSON object. The function must accept either no arguments or a dictionary-like object. """ self.schema = schema resolver = LocalRefResolver.from_schema(schema) self.validator = Draft4Validator(schema, resolver=resolver) self.strategies = dict(self.STRATEGIES) self.strategies.update(strategies) self.objclass_menu = {'dict': dict, 'OrderedDict': OrderedDict} if objclass_menu: self.objclass_menu.update(objclass_menu) self.objclass_menu['_default'] = self.objclass_menu[objclass_def]