def _determine_function_name_type(node, config=None):
property_classes, property_names = _get_properties(config)<EOL>if not node.is_method():<EOL><INDENT>return "<STR_LIT>"<EOL><DEDENT>if node.decorators:<EOL><INDENT>decorators = node.decorators.nodes<EOL><DEDENT>else:<EOL><INDENT>decorators = []<EOL><DEDENT>for decorator in decorators:<EOL><INDENT>if isinstance(decorator, astroid.Name) or (<EOL>isinstance(decorator, astroid.Attribute)<EOL>and decorator.attrname in property_names<EOL>):<EOL><INDENT>infered = utils.safe_infer(decorator)<EOL>if infered and infered.qname() in property_classes:<EOL><INDENT>return "<STR_LIT>"<EOL><DEDENT><DEDENT>elif isinstance(decorator, astroid.Attribute) and decorator.attrname in (<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>):<EOL><INDENT>return "<STR_LIT>"<EOL><DEDENT><DEDENT>return "<STR_LIT>"<EOL>
Determine the name type whose regex the a function's name should match.

    :param node: A function node.
    :type node: astroid.node_classes.NodeNG
    :param config: Configuration from which to pull additional property classes.
    :type config: :class:`optparse.Values`

    :returns: One of ('function', 'method', 'attr')
    :rtype: str