Generate a camel-case identifier with the first word capitalised.
    Useful for class names.

    Takes a string, prefix, and optional suffix.

    `prefix` can be set to `''`, though be careful - without a prefix, the
    function will throw `InvalidIdentifier` when your string starts with a
    number.

    Example:
        >>> upper_camel("I'm a class", prefix='')
        'IAmAClass'

def upper_camel(string, prefix='', suffix=''):
    """
    Generate a camel-case identifier with the first word capitalised.
    Useful for class names.

    Takes a string, prefix, and optional suffix.

    `prefix` can be set to `''`, though be careful - without a prefix, the
    function will throw `InvalidIdentifier` when your string starts with a
    number.

    Example:
        >>> upper_camel("I'm a class", prefix='')
        'IAmAClass'
    """

    return require_valid(append_underscore_if_keyword(''.join(
        upper_case_first_char(word)
        for word in en.words(' '.join([prefix, string, suffix])))
    ))