def splitkey(key):
    """!Splits a string on "%" and returns the list, raising an
    exception if any components are empty.

    @returns a list of substrings of key, split on "%"
    @param key a string to split
    @raise ValueError if any substrings are empty"""
    names=key.split("%")
    if any([ not s  for  s in names ]):
        raise ValueError("Empty name component in \"%s\""%(key,))
    return names