def _produce_output_message(func_name, kparams): """Generate an output message for "rpc"-style API methods. This message is a wrapper to the declared return type. """ _returns = kparams.get('_returns') _body_style = _validate_body_style(kparams) _out_message_name = kparams.get('_out_message', '%s%s' % (func_name, RESPONSE_SUFFIX)) out_params = TypeInfo() if _returns and _body_style == 'wrapped': if isinstance(_returns, (list, tuple)): default_names = [ '%s%s%d' % (func_name, RESULT_SUFFIX, i) for i in range(len(_returns)) ] _out_variable_names = kparams.get('_out_variable_names', default_names) assert (len(_returns) == len(_out_variable_names)) var_pair = zip(_out_variable_names, _returns) out_params = TypeInfo(var_pair) else: _out_variable_name = kparams.get( '_out_variable_name', '%s%s' % (func_name, RESULT_SUFFIX)) out_params[_out_variable_name] = _returns ns = DEFAULT_NS if _out_message_name.startswith("{"): ns = _out_message_name[1:].partition("}")[0] if _body_style == 'bare' and _returns is not None: message = ComplexModel.alias(_out_message_name, ns, _returns) else: message = ComplexModel.produce(type_name=_out_message_name, namespace=ns, members=out_params) message.Attributes._wrapper = True message.__namespace__ = ns # FIXME: is this necessary? return message
def _produce_output_message(func_name, kparams): """Generate an output message for "rpc"-style API methods. This message is a wrapper to the declared return type. """ _returns = kparams.get('_returns') _body_style = _validate_body_style(kparams) _out_message_name = kparams.get('_out_message', '%s%s' % (func_name, RESPONSE_SUFFIX)) out_params = TypeInfo() if _returns and _body_style == 'wrapped': if isinstance(_returns, (list, tuple)): default_names = ['%s%s%d' % (func_name, RESULT_SUFFIX, i) for i in range(len(_returns))] _out_variable_names = kparams.get('_out_variable_names', default_names) assert (len(_returns) == len(_out_variable_names)) var_pair = zip(_out_variable_names, _returns) out_params = TypeInfo(var_pair) else: _out_variable_name = kparams.get('_out_variable_name', '%s%s' % (func_name, RESULT_SUFFIX)) out_params[_out_variable_name] = _returns ns = DEFAULT_NS if _out_message_name.startswith("{"): ns = _out_message_name[1:].partition("}")[0] if _body_style == 'bare' and _returns is not None: message = ComplexModel.alias(_out_message_name, ns, _returns) else: message = ComplexModel.produce(type_name=_out_message_name, namespace=ns, members=out_params) message.Attributes._wrapper = True message.__namespace__ = ns # FIXME: is this necessary? return message
raise Exception("The parameter numbers of the %r function and its " "decorator mismatch." % f.func_name) ns = DEFAULT_NS if _in_message_name.startswith("{"): ns = _in_message_name[1:].partition("}")[0] if _body_style == 'bare': if len(in_params) > 1: raise Exception("body_style='bare' can handle at most one function " "argument.") in_param = None if len(in_params) == 1: in_param, = in_params.values() message = ComplexModel.alias(_in_message_name, ns, in_param) else: message = ComplexModel.produce(type_name=_in_message_name, namespace=ns, members=in_params) message.__namespace__ = ns return message def _validate_body_style(kparams): _body_style = kparams.get('_body_style') _soap_body_style = kparams.get('_soap_body_style') if _body_style is None: _body_style = 'wrapped' elif not (_body_style in ('wrapped', 'bare')):
"decorator mismatch." % f.func_name) ns = DEFAULT_NS if _in_message_name.startswith("{"): ns = _in_message_name[1:].partition("}")[0] if _body_style == 'bare': if len(in_params) > 1: raise Exception( "body_style='bare' can handle at most one function " "argument.") in_param = None if len(in_params) == 1: in_param, = in_params.values() message = ComplexModel.alias(_in_message_name, ns, in_param) else: message = ComplexModel.produce(type_name=_in_message_name, namespace=ns, members=in_params) message.__namespace__ = ns return message def _validate_body_style(kparams): _body_style = kparams.get('_body_style') _soap_body_style = kparams.get('_soap_body_style') if _body_style is None: