Get the name of fumctions or methods decorated with the specified decorator.
        If a method, the name will be as class_name.method_name.
        Args :
            path                : The path to the module.
            decorator_module    : The name of the module defining the decorator.
            decorator_name      : The name of the decorator.

def get_decorated_names(path,decorator_module, decorator_name):
    '''
        Get the name of fumctions or methods decorated with the specified decorator.
        If a method, the name will be as class_name.method_name.
        Args :
            path                : The path to the module.
            decorator_module    : The name of the module defining the decorator.
            decorator_name      : The name of the decorator.
    '''
    #Read the source
    with open(path) as f:
        module_source   = f.read()

    expression          = '\s*@(?:{}\.)?{}[\s\S]+?(?:instance_creator\s*=\s*([\w.]+)[\s\S]+?)?\s*def\s+(\w+)\s*\(\s*(self)?'.format(decorator_module, decorator_name)
    methods             = re.compile(expression).findall(module_source)
    decorateds          = [x[1] for x in methods]
    instance_creators   = [x[0] if x[0] != '' else None for x in methods]
    is_methods          = [x[2]!='' for x in methods]
    result                      = []
    class_name_expression       = '\s*(?:class\s+(\w+)\s*\(.*\:\n[\s\S]+?)+?\s+def\s+{}\s*\('

    #Get class names for methods
    for i in range(len(decorateds)) :
        decorated   = decorateds[i]
        #If a method
        if is_methods[i] :
            #Get the class name
            index           = decorateds[:i].count(decorated)
            class_name      = re.compile(class_name_expression.format(decorated)).findall(module_source)[index]
            original_name   = decorated
            instance_creator= instance_creators[i]
            if decorated[:2] =='__' :
                decorated = '_'+ class_name+ decorated
            result.append({'name': decorated, 'class_name': class_name, 'instance_creator': instance_creator})
        else :
            result.append({'name': decorated})
    if DEBUG :
        print(
            decorateds          ,
            instance_creators   ,
            is_methods          ,
            result
            )
    return result