def _determine_function_name_type(node: astroid.FunctionDef, config=None):
    "Determine the name type whose regex the a function's name should match.\n\n    :param node: A function node.\n    :param config: Configuration from which to pull additional property classes.\n    :type config: :class:`optparse.Values`\n\n    :returns: One of ('function', 'method', 'attr')\n    :rtype: str\n    "
    (property_classes, property_names) = _get_properties(config)
    if (not node.is_method()):
        return 'function'
    if (is_property_setter(node) or is_property_deleter(node)):
        return 'attr'
    if node.decorators:
        decorators = node.decorators.nodes
    else:
        decorators = []
    for decorator in decorators:
        if (isinstance(decorator, astroid.Name) or (isinstance(decorator, astroid.Attribute) and (decorator.attrname in property_names))):
            inferred = utils.safe_infer(decorator)
            if (inferred and hasattr(inferred, 'qname') and (inferred.qname() in property_classes)):
                return 'attr'
    return 'method'
Determine the name type whose regex the a function's name should match.

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

:returns: One of ('function', 'method', 'attr')
:rtype: str
def _determine_function_name_type(node: astroid.FunctionDef, config=None):
    "Determine the name type whose regex the a function's name should match.\n\n    :param node: A function node.\n    :param config: Configuration from which to pull additional property classes.\n    :type config: :class:`optparse.Values`\n\n    :returns: One of ('function', 'method', 'attr')\n    :rtype: str\n    "
    (property_classes, property_names) = _get_properties(config)
    if (not node.is_method()):
        return 'function'
    if (is_property_setter(node) or is_property_deleter(node)):
        return 'attr'
    if node.decorators:
        decorators = node.decorators.nodes
    else:
        decorators = []
    for decorator in decorators:
        if (isinstance(decorator, astroid.Name) or (isinstance(decorator, astroid.Attribute) and (decorator.attrname in property_names))):
            inferred = utils.safe_infer(decorator)
            if (inferred and hasattr(inferred, 'qname') and (inferred.qname() in property_classes)):
                return 'attr'
    return 'method'