我们从Python开源项目中,提取了以下3个代码示例,用于说明如何使用voluptuous.ALLOW_EXTRA。
def _build_attributes_validator(mcs): """ Returns validator to validate the sub-classes attributes. """ valid_attributes = { Required("commands", 'required class attribute'): [ { Required("name"): str, Required("cmd"): [str], Optional("kill-signal", default=signal.SIGINT): int } ] } for attr_name, class_client in mcs._class_clients.items(): client_validator = { Required("name"): str, } client_validator.update(class_client.validator()) key = Optional(attr_name, 'required class attribute') valid_attributes[key] = [client_validator] return Schema(valid_attributes, extra=ALLOW_EXTRA)
def validate(self): supplier = Schema({ Required('ruc'): All(str, Length(min=11, max=11)), Required('registration_name'): str, Optional('address'): dict, Optional('commercial_name'): str }, extra=ALLOW_EXTRA) customer = Schema({ Required('ruc'): All(str, Length(min=1, max=11)) }, extra=ALLOW_EXTRA) schema = Schema({ Required('issue_date'): str, Required('supplier'): supplier, Required('customer'): customer, Required('voucher_type'): str, Required('currency'): str, Required('voucher_number'): str, Required('lines'): All(list, Length(min=1)) }, extra=ALLOW_EXTRA) schema(self._data)
def load_tcconfig(self, config_file_path): import json from voluptuous import Schema, Required, Any, ALLOW_EXTRA schema = Schema({ Required(six.text_type): { Any(*TrafficDirection.LIST): { six.text_type: { six.text_type: Any(six.text_type, int, float) }, } }, }, extra=ALLOW_EXTRA) with open(config_file_path) as fp: self.__config_table = json.load(fp) schema(self.__config_table) self.__logger.debug("tc config file: {:s}".format( json.dumps(self.__config_table, indent=4)))