def param_text(name, param, indent, step): """ Format a method parameter. """ text = indent # Print parameter name if name: param_offset = 32 text += name.ljust(param_offset - len(indent)) else: param_offset = len(indent) # Print parameter type param_type = python_type(param) text += xmlrpc_type(param_type) + "\n" # Print parameter documentation right below type if isinstance(param, Parameter): wrapper = textwrap.TextWrapper(width = 70, initial_indent = " " * param_offset, subsequent_indent = " " * param_offset) text += "\n".join(wrapper.wrap(param.doc)) + "\n" param = param.type text += "\n" # Indent struct fields and mixed types if isinstance(param, dict): for name, subparam in param.iteritems(): text += param_text(name, subparam, indent + step, step) elif isinstance(param, Mixed): for subparam in param: text += param_text(name, subparam, indent + step, step) elif isinstance(param, (list, tuple, set)): for subparam in param: text += param_text("", subparam, indent + step, step) return text
# auth = expected #else: # auth = None # Get actual expected type from within the Parameter structure if isinstance(expected, Parameter): min = expected.min max = expected.max nullok = expected.nullok expected = expected.type else: min = None max = None nullok = False expected_type = python_type(expected) # If value can be NULL if value is None and nullok: return # Strings are a special case. Accept either unicode or str # types if a string is expected. if expected_type in StringTypes and isinstance(value, StringTypes): pass # Integers and long integers are also special types. Accept # either int or long types if an int or long is expected. elif expected_type in (IntType, LongType) and isinstance(value, (IntType, LongType)): pass