def create_unique_base26_symlink(path, source):
retries = <NUM_LIT:0><EOL>while True:<EOL><INDENT>name = find_matching_symlink(path, source)<EOL>if name:<EOL><INDENT>return os.path.join(path, name)<EOL><DEDENT>names = [<EOL>x for x in os.listdir(path)<EOL>if os.path.islink(os.path.join(path, x))<EOL>]<EOL>if names:<EOL><INDENT>prev = max(names)<EOL><DEDENT>else:<EOL><INDENT>prev = None<EOL><DEDENT>linkname = get_next_base26(prev)<EOL>linkpath = os.path.join(path, linkname)<EOL>try:<EOL><INDENT>os.symlink(source, linkpath)<EOL>return linkpath<EOL><DEDENT>except OSError as e:<EOL><INDENT>if e.errno != errno.EEXIST:<EOL><INDENT>raise<EOL><DEDENT><DEDENT>if retries > <NUM_LIT:10>:<EOL><INDENT>raise RuntimeError(<EOL>"<STR_LIT>")<EOL><DEDENT>retries += <NUM_LIT:1><EOL><DEDENT>
Create a base-26 symlink in `path` pointing to `source`.

    If such a symlink already exists, it is returned. Note that there is a small
    chance that this function may create a new symlink when there is already one
    pointed at `source`.

    Assumes `path` only contains base26 symlinks.

    Returns:
        str: Path to created symlink.