def generic_type_name(v):
if isinstance(v, AstExampleRef):<EOL><INDENT>return "<STR_LIT>"<EOL><DEDENT>elif isinstance(v, numbers.Integral):<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>elif isinstance(v, numbers.Real):<EOL><INDENT>return '<STR_LIT:float>'<EOL><DEDENT>elif isinstance(v, (tuple, list)):<EOL><INDENT>return '<STR_LIT:list>'<EOL><DEDENT>elif isinstance(v, six.string_types):<EOL><INDENT>return '<STR_LIT:string>'<EOL><DEDENT>elif v is None:<EOL><INDENT>return '<STR_LIT:null>'<EOL><DEDENT>else:<EOL><INDENT>return type(v).__name__<EOL><DEDENT>
Return a descriptive type name that isn't Python specific. For example, an
int type will return 'integer' rather than 'int'.