def explain_method(**kwargs): function_name = kwargs['_default_function_name'] _is_callback = kparams.get('_is_callback', False) _is_async = kparams.get('_is_async', False) _mtom = kparams.get('_mtom', False) _in_header = kparams.get('_in_header', None) _out_header = kparams.get('_out_header', None) _port_type = kparams.get('_soap_port_type', None) _no_ctx = kparams.get('_no_ctx', False) _no_self = kparams.get('_no_self', True) _udp = kparams.get('_udp', None) _aux = kparams.get('_aux', None) _pattern = kparams.get("_pattern", None) _patterns = kparams.get("_patterns", []) _args = kparams.get("_args", None) _translations = kparams.get("_translations", None) _when = kparams.get("_when", None) _service_class = kparams.get("_service_class", None) _href = kparams.get("_href", None) _substitute_self_reference(params, kparams, kwargs, _no_self) _faults = None if ('_faults' in kparams) and ('_throws' in kparams): raise ValueError( "only one of '_throws ' or '_faults' arguments" "should be given, as they're synonyms.") elif '_faults' in kparams: _faults = kparams.get('_faults', None) elif '_throws' in kparams: _faults = kparams.get('_throws', None) _in_message_name_override = not ('_in_message_name' in kparams) _in_message_name = kparams.get('_in_message_name', function_name) _operation_name = kparams.get('_operation_name', function_name) if _operation_name != function_name and _in_message_name != function_name: raise ValueError( "only one of '_operation_name' and '_in_message_name' " "arguments should be given") if _in_message_name == function_name: _in_message_name = add_request_suffix(_operation_name) _in_variable_names = kparams.get('_in_variable_names', {}) in_message = _produce_input_message(f, params, kparams, _in_message_name, _in_variable_names, _no_ctx, _no_self, _args) _out_message_name_override = not ('_out_message_name' in kparams) out_message = _produce_output_message(function_name, kparams) doc = getattr(f, '__doc__') if _pattern is not None and _patterns != []: raise ValueError("only one of '_pattern' and '_patterns' " "arguments should be given") if _pattern is not None: _patterns = [_pattern] body_style = BODY_STYLE_WRAPPED body_style_str = _validate_body_style(kparams) if body_style_str.endswith('bare'): if body_style_str == 'out_bare': body_style = BODY_STYLE_OUT_BARE else: body_style = BODY_STYLE_BARE t = in_message from spyne.model import ComplexModelBase if issubclass(t, ComplexModelBase) and len(t._type_info) == 0: body_style = BODY_STYLE_EMPTY retval = MethodDescriptor( f, in_message, out_message, doc, _is_callback, _is_async, _mtom, _in_header, _out_header, _faults, port_type=_port_type, no_ctx=_no_ctx, udp=_udp, class_key=function_name, aux=_aux, patterns=_patterns, body_style=body_style, args=_args, operation_name=_operation_name, no_self=_no_self, translations=_translations, when=_when, in_message_name_override=_in_message_name_override, out_message_name_override=_out_message_name_override, service_class=_service_class, href=_href, ) if _patterns is not None and _no_self: for p in _patterns: p.hello(retval) return retval
def explain_method(**kwargs): # params and kparams are passed by the user to the @rpc family # of decorators. # kwargs is passed by spyne while sanitizing methods. it mainly # contains information about the method context like the service # class that contains the method at hand. function_name = kwargs['_default_function_name'] _service_class = kwargs.pop("_service_class", None) _self_ref_replacement = None # this block is passed straight to the descriptor _is_callback = kparams.pop('_is_callback', False) _is_async = kparams.pop('_is_async', False) _mtom = kparams.pop('_mtom', False) _in_header = kparams.pop('_in_header', None) _out_header = kparams.pop('_out_header', None) _port_type = kparams.pop('_port_type', None) _no_ctx = kparams.pop('_no_ctx', False) _aux = kparams.pop('_aux', None) _pattern = kparams.pop("_pattern", None) _patterns = kparams.pop("_patterns", []) _args = kparams.pop("_args", None) _translations = kparams.pop("_translations", None) _when = kparams.pop("_when", None) _static_when = kparams.pop("_static_when", None) _href = kparams.pop("_href", None) _logged = kparams.pop("_logged", True) _internal_key_suffix = kparams.pop('_internal_key_suffix', '') if '_service' in kparams and '_service_class' in kparams: raise LogicError("Please pass only one of '_service' and " "'_service_class'") if '_service' in kparams: _service_class = kparams.pop("_service") if '_service_class' in kparams: _service_class = kparams.pop("_service_class") _no_self = kparams.pop('_no_self', True) _event_managers = _get_event_managers(kparams) # mrpc-specific _self_ref_replacement = kwargs.pop('_self_ref_replacement', None) _default_on_null = kparams.pop('_default_on_null', False) _substitute_self_reference(params, kparams, _self_ref_replacement, _no_self) _faults = None if ('_faults' in kparams) and ('_throws' in kparams): raise ValueError("only one of '_throws ' or '_faults' arguments" "must be given -- they're synonyms.") elif '_faults' in kparams: _faults = kparams.pop('_faults') elif '_throws' in kparams: _faults = kparams.pop('_throws') _is_in_message_name_overridden = not ('_in_message_name' in kparams) _in_message_name = kparams.pop('_in_message_name', function_name) if _no_self is False and _is_in_message_name_overridden: _in_message_name = '%s.%s' % \ (_self_ref_replacement.get_type_name(), _in_message_name) _operation_name = kparams.pop('_operation_name', function_name) if _operation_name != function_name and \ _in_message_name != function_name: raise ValueError( "only one of '_operation_name' and '_in_message_name' " "arguments should be given") if _in_message_name == function_name: _in_message_name = add_request_suffix(_operation_name) if '_in_arg_names' in kparams and '_in_variable_names' in kparams: raise LogicError("Use either '_in_arg_names' or " "'_in_variable_names', not both.") elif '_in_arg_names' in kparams: _in_arg_names = kparams.pop('_in_arg_names') elif '_in_variable_names' in kparams: _in_arg_names = kparams.pop('_in_variable_names') else: _in_arg_names = {} if '_udd' in kparams and '_udp' in kparams: raise LogicError("Use either '_udd' or '_udp', not both.") elif '_udd' in kparams: _udd = kparams.pop('_udd') elif '_udp' in kparams: _udd = kparams.pop('_udp') else: _udd = {} _wsdl_part_name = kparams.get('_wsdl_part_name', None) body_style = BODY_STYLE_WRAPPED body_style_str = _validate_body_style(kparams) if body_style_str.endswith('bare'): if body_style_str == 'out_bare': body_style = BODY_STYLE_OUT_BARE else: body_style = BODY_STYLE_BARE in_message = _produce_input_message(f, params, _in_message_name, _in_arg_names, _no_ctx, _no_self, _args, body_style_str, _self_ref_replacement, _wsdl_part_name) out_message = _produce_output_message(function_name, body_style_str, _self_ref_replacement, _no_self, kparams) if _logged != True: in_message.Attributes.logged = _logged out_message.Attributes.logged = _logged doc = getattr(f, '__doc__') if _pattern is not None and _patterns != []: raise ValueError("only one of '_pattern' and '_patterns' " "arguments should be given") if _pattern is not None: _patterns = [_pattern] if body_style_str.endswith('bare'): from spyne.model import ComplexModelBase ti = in_message to = out_message if issubclass(ti, ComplexModelBase) and len(ti._type_info) == 0: if not issubclass(to, ComplexModelBase) or \ len(to._type_info) > 0: body_style = BODY_STYLE_EMPTY_OUT_BARE else: body_style = BODY_STYLE_EMPTY assert _in_header is None or isinstance(_in_header, tuple) retval = MethodDescriptor(f, in_message, out_message, doc, is_callback=_is_callback, is_async=_is_async, mtom=_mtom, in_header=_in_header, out_header=_out_header, faults=_faults, parent_class=_self_ref_replacement, port_type=_port_type, no_ctx=_no_ctx, udd=_udd, class_key=function_name, aux=_aux, patterns=_patterns, body_style=body_style, args=_args, operation_name=_operation_name, no_self=_no_self, translations=_translations, when=_when, static_when=_static_when, service_class=_service_class, href=_href, internal_key_suffix=_internal_key_suffix, default_on_null=_default_on_null, event_managers=_event_managers, logged=_logged, ) if _patterns is not None and _no_self: for p in _patterns: p.hello(retval) if len(kparams) > 0: raise ValueError("Unknown kwarg(s) %r passed.", kparams) return retval
def explain_method(*args, **kwargs): retval = None function_name = kwargs['_default_function_name'] _is_callback = kparams.get('_is_callback', False) _is_async = kparams.get('_is_async', False) _mtom = kparams.get('_mtom', False) _in_header = kparams.get('_in_header', None) _out_header = kparams.get('_out_header', None) _port_type = kparams.get('_soap_port_type', None) _no_ctx = kparams.get('_no_ctx', False) _udp = kparams.get('_udp', None) _aux = kparams.get('_aux', None) _pattern = kparams.get("_pattern",None) _patterns = kparams.get("_patterns",[]) _args = kparams.get("_args",None) _faults = None if ('_faults' in kparams) and ('_throws' in kparams): raise ValueError("only one of '_throws ' or '_faults' arguments" "should be given, as they're synonyms.") elif '_faults' in kparams: _faults = kparams.get('_faults', None) elif '_throws' in kparams: _faults = kparams.get('_throws', None) _in_message_name = kparams.get('_in_message_name', function_name) _operation_name = kparams.get('_operation_name', function_name) if _operation_name != function_name and _in_message_name != function_name: raise ValueError("only one of '_operation_name' and '_in_message_name' " "arguments should be given") if _in_message_name == function_name: _in_message_name = add_request_suffix(_operation_name) _in_variable_names = kparams.get('_in_variable_names', {}) in_message = _produce_input_message(f, params, kparams, _in_message_name, _in_variable_names, _no_ctx, _args) out_message = _produce_output_message(function_name, kparams) doc = getattr(f, '__doc__') if _pattern is not None and _patterns != []: raise ValueError("only one of '_pattern' and '__patterns' " "arguments should be given") if _pattern is not None: _patterns = [_pattern] body_style = BODY_STYLE_WRAPPED if _validate_body_style(kparams) == 'bare': body_style = BODY_STYLE_BARE t = in_message from spyne.model import ComplexModelBase if issubclass(t, ComplexModelBase) and len(t._type_info) == 0: body_style = BODY_STYLE_EMPTY retval = MethodDescriptor(f, in_message, out_message, doc, _is_callback, _is_async, _mtom, _in_header, _out_header, _faults, port_type=_port_type, no_ctx=_no_ctx, udp=_udp, class_key=function_name, aux=_aux, patterns=_patterns, body_style=body_style, args=_args, operation_name=_operation_name) return retval
def explain_method(**kwargs): function_name = kwargs['_default_function_name'] # this block is passed straight to the descriptor _is_callback = kparams.pop('_is_callback', False) _is_async = kparams.pop('_is_async', False) _mtom = kparams.pop('_mtom', False) _in_header = kparams.pop('_in_header', None) _out_header = kparams.pop('_out_header', None) _port_type = kparams.pop('_soap_port_type', None) _no_ctx = kparams.pop('_no_ctx', False) _no_self = kparams.pop('_no_self', True) _udp = kparams.pop('_udp', None) _aux = kparams.pop('_aux', None) _pattern = kparams.pop("_pattern", None) _patterns = kparams.pop("_patterns", []) _args = kparams.pop("_args", None) _translations = kparams.pop("_translations", None) _when = kparams.pop("_when", None) _service_class = kparams.pop("_service_class", None) _href = kparams.pop("_href", None) _substitute_self_reference(params, kparams, kwargs, _no_self) _faults = None if ('_faults' in kparams) and ('_throws' in kparams): raise ValueError("only one of '_throws ' or '_faults' arguments" "must be given -- they're synonyms.") elif '_faults' in kparams: _faults = kparams.pop('_faults') elif '_throws' in kparams: _faults = kparams.pop('_throws') _in_message_name_override = not ('_in_message_name' in kparams) _in_message_name = kparams.pop('_in_message_name', function_name) _operation_name = kparams.pop('_operation_name', function_name) if _operation_name != function_name and \ _in_message_name != function_name: raise ValueError( "only one of '_operation_name' and '_in_message_name' " "arguments should be given") if _in_message_name == function_name: _in_message_name = add_request_suffix(_operation_name) _in_variable_names = kparams.pop('_in_variable_names', {}) body_style = BODY_STYLE_WRAPPED body_style_str = _validate_body_style(kparams) if body_style_str.endswith('bare'): if body_style_str == 'out_bare': body_style = BODY_STYLE_OUT_BARE else: body_style = BODY_STYLE_BARE in_message = _produce_input_message(f, params, _in_message_name, _in_variable_names, _no_ctx, _no_self, _args, body_style_str) _out_message_name_override = not ('_out_message_name' in kparams) out_message = _produce_output_message(function_name, body_style_str, kparams) doc = getattr(f, '__doc__') if _pattern is not None and _patterns != []: raise ValueError("only one of '_pattern' and '_patterns' " "arguments should be given") if _pattern is not None: _patterns = [_pattern] if body_style_str.endswith('bare'): from spyne.model import ComplexModelBase t = in_message if issubclass(t, ComplexModelBase) and len(t._type_info) == 0: body_style = BODY_STYLE_EMPTY retval = MethodDescriptor(f, in_message, out_message, doc, _is_callback, _is_async, _mtom, _in_header, _out_header, _faults, port_type=_port_type, no_ctx=_no_ctx, udp=_udp, class_key=function_name, aux=_aux, patterns=_patterns, body_style=body_style, args=_args, operation_name=_operation_name, no_self=_no_self, translations=_translations, when=_when, in_message_name_override=_in_message_name_override, out_message_name_override=_out_message_name_override, service_class=_service_class, href=_href, ) if _patterns is not None and _no_self: for p in _patterns: p.hello(retval) if len(kparams) > 0: raise Exception("Unknown kwarg(s) %r passed.", kparams) return retval
def explain_method(**kwargs): # params and kparams are passed by the user to the @rpc family # of decorators. # kwargs is passed by spyne while sanitizing methods. it mainly # contains information about the method context like the service # class that contains the method at hand. function_name = kwargs['_default_function_name'] _service_class = kwargs.pop("_service_class", None) _self_ref_replacement = None # this block is passed straight to the descriptor _is_callback = kparams.pop('_is_callback', False) _is_async = kparams.pop('_is_async', False) _mtom = kparams.pop('_mtom', False) _in_header = kparams.pop('_in_header', None) _out_header = kparams.pop('_out_header', None) _port_type = kparams.pop('_port_type', None) _no_ctx = kparams.pop('_no_ctx', False) _aux = kparams.pop('_aux', None) _pattern = kparams.pop("_pattern", None) _patterns = kparams.pop("_patterns", []) _args = kparams.pop("_args", None) _translations = kparams.pop("_translations", None) _when = kparams.pop("_when", None) _static_when = kparams.pop("_static_when", None) _href = kparams.pop("_href", None) _internal_key_suffix = kparams.pop('_internal_key_suffix', '') if '_service' in kparams and '_service_class' in kparams: raise LogicError("Please pass only one of '_service' and " "'_service_class'") if '_service' in kparams: _service_class = kparams.pop("_service") if '_service_class' in kparams: _service_class = kparams.pop("_service_class") _no_self = kparams.pop('_no_self', True) _event_managers = _get_event_managers(kparams) # mrpc-specific _self_ref_replacement = kwargs.pop('_self_ref_replacement', None) _default_on_null = kparams.pop('_default_on_null', False) _substitute_self_reference(params, kparams, _self_ref_replacement, _no_self) _faults = None if ('_faults' in kparams) and ('_throws' in kparams): raise ValueError( "only one of '_throws ' or '_faults' arguments" "must be given -- they're synonyms.") elif '_faults' in kparams: _faults = kparams.pop('_faults') elif '_throws' in kparams: _faults = kparams.pop('_throws') _is_in_message_name_overridden = not ('_in_message_name' in kparams) _in_message_name = kparams.pop('_in_message_name', function_name) if _no_self is False and _is_in_message_name_overridden: _in_message_name = '%s.%s' % \ (_self_ref_replacement.get_type_name(), _in_message_name) _operation_name = kparams.pop('_operation_name', function_name) if _operation_name != function_name and \ _in_message_name != function_name: raise ValueError( "only one of '_operation_name' and '_in_message_name' " "arguments should be given") if _in_message_name == function_name: _in_message_name = add_request_suffix(_operation_name) if '_in_arg_names' in kparams and '_in_variable_names' in kparams: raise LogicError("Use either '_in_arg_names' or " "'_in_variable_names', not both.") elif '_in_arg_names' in kparams: _in_arg_names = kparams.pop('_in_arg_names') elif '_in_variable_names' in kparams: _in_arg_names = kparams.pop('_in_variable_names') else: _in_arg_names = {} if '_udd' in kparams and '_udp' in kparams: raise LogicError("Use either '_udd' or '_udp', not both.") elif '_udd' in kparams: _udd = kparams.pop('_udd') elif '_udp' in kparams: _udd = kparams.pop('_udp') else: _udd = {} body_style = BODY_STYLE_WRAPPED body_style_str = _validate_body_style(kparams) if body_style_str.endswith('bare'): if body_style_str == 'out_bare': body_style = BODY_STYLE_OUT_BARE else: body_style = BODY_STYLE_BARE in_message = _produce_input_message(f, params, _in_message_name, _in_arg_names, _no_ctx, _no_self, _args, body_style_str, _self_ref_replacement) out_message = _produce_output_message(function_name, body_style_str, _self_ref_replacement, _no_self, kparams) doc = getattr(f, '__doc__') if _pattern is not None and _patterns != []: raise ValueError("only one of '_pattern' and '_patterns' " "arguments should be given") if _pattern is not None: _patterns = [_pattern] if body_style_str.endswith('bare'): from spyne.model import ComplexModelBase ti = in_message to = out_message if issubclass(ti, ComplexModelBase) and len( ti._type_info) == 0: if not issubclass(to, ComplexModelBase) or \ len(to._type_info) > 0: body_style = BODY_STYLE_EMPTY_OUT_BARE else: body_style = BODY_STYLE_EMPTY assert _in_header is None or isinstance(_in_header, tuple) retval = MethodDescriptor( f, in_message, out_message, doc, is_callback=_is_callback, is_async=_is_async, mtom=_mtom, in_header=_in_header, out_header=_out_header, faults=_faults, parent_class=_self_ref_replacement, port_type=_port_type, no_ctx=_no_ctx, udd=_udd, class_key=function_name, aux=_aux, patterns=_patterns, body_style=body_style, args=_args, operation_name=_operation_name, no_self=_no_self, translations=_translations, when=_when, static_when=_static_when, service_class=_service_class, href=_href, internal_key_suffix=_internal_key_suffix, default_on_null=_default_on_null, event_managers=_event_managers, ) if _patterns is not None and _no_self: for p in _patterns: p.hello(retval) if len(kparams) > 0: raise ValueError("Unknown kwarg(s) %r passed.", kparams) return retval