def validate_workflow_options(d): """ 1. warn if an option provided in not a valid workflow option. 2. try to coerce raw string values if possible Return a list of tuples [(id, value)] to be consistent with the existing API """ for option_id in d: if option_id not in REGISTERED_WORKFLOW_OPTIONS: msg = "Unknown option. Ignoring workflow option '{i}'.".format( i=option_id) sys.stderr.write(msg + "\n") log.warn(msg) wopts = [] for option_id, schema in REGISTERED_WORKFLOW_OPTIONS.iteritems(): if option_id in d: raw_value = d[option_id] types_ = schema['properties'][option_id]['type'] coerced_value = crude_coerce_type_from_str(raw_value, types_) _ = jsonschema.validate(schema, {option_id: coerced_value}) wopts.append((option_id, coerced_value)) else: # grab default value = OP.get_default_from_schema(schema) wopts.append((option_id, value)) return wopts
def validate_workflow_options(d): """ 1. warn if an option provided in not a valid workflow option. 2. try to coerce raw string values if possible Return a list of tuples [(id, value)] to be consistent with the existing API """ for option_id in d: if option_id not in REGISTERED_WORKFLOW_OPTIONS: msg = "Unknown option. Ignoring workflow option '{i}'.".format(i=option_id) sys.stderr.write(msg + "\n") log.warn(msg) wopts = [] for option_id, schema in REGISTERED_WORKFLOW_OPTIONS.iteritems(): if option_id in d: raw_value = d[option_id] types_ = schema["properties"][option_id]["type"] coerced_value = crude_coerce_type_from_str(raw_value, types_) _ = jsonschema.validate(schema, {option_id: coerced_value}) wopts.append((option_id, coerced_value)) else: # grab default value = OP.get_default_from_schema(schema) wopts.append((option_id, value)) return wopts
def from_id_dict(d): """ Create an instance from a id dict of options (pbsmrtpipe.options.x:value} """ from pbsmrtpipe.pb_io import REGISTERED_WORKFLOW_OPTIONS import pbsmrtpipe.schema_opt_utils as OP adict = {} for opt_id, schema in REGISTERED_WORKFLOW_OPTIONS.iteritems(): if opt_id in d: v = d[opt_id] OP.validate_value(schema, {opt_id: v}) adict[opt_id] = v else: value = OP.get_default_from_schema(schema) d[opt_id] = value # build map to instance var names adict = { k: d[v] for k, v in WorkflowLevelOptions.ATTR_TO_ID.iteritems() } return WorkflowLevelOptions(**adict)
def from_id_dict(d): """ Create an instance from a id dict of options (pbsmrtpipe.options.x:value} """ adict = {} for opt_id, schema in REGISTERED_WORKFLOW_OPTIONS.iteritems(): if opt_id in d: v = d[opt_id] OP.validate_value(schema, {opt_id: v}) adict[opt_id] = v else: value = OP.get_default_from_schema(schema) d[opt_id] = value # build map to instance var names adict = {k: d[v] for k, v in WorkflowLevelOptions.ATTR_TO_ID.iteritems()} return WorkflowLevelOptions(**adict)