Lazy-load the tree of names, and return them in an object.
    Of course, asterisks etc. cannot be resolved, you should use allowed() to
    check for a valid name.

def names():
    '''
    Lazy-load the tree of names, and return them in an object.
    Of course, asterisks etc. cannot be resolved, you should use allowed() to
    check for a valid name.
    '''
    global blacklist
    if blacklist is None:
        # not yet loaded
        path = os.path.join(os.path.dirname(__file__), 'names.yaml')
        f = open(path, 'r')
        blacklist = yaml.safe_load(f)
        f.close()
    return blacklist