converts camelcase to underscore
    >>> uncamel('fooBar')
    'foo_bar'
    >>> uncamel('FooBar')
    'foo_bar'
    >>> uncamel('_fooBar')
    '_foo_bar'
    >>> uncamel('_FooBar')
    '__foo_bar'

def uncamel(name):
    """converts camelcase to underscore
    >>> uncamel('fooBar')
    'foo_bar'
    >>> uncamel('FooBar')
    'foo_bar'
    >>> uncamel('_fooBar')
    '_foo_bar'
    >>> uncamel('_FooBar')
    '__foo_bar'
    """
    response, name = name[0].lower(), name[1:]
    for n in name:
        if n.isupper():
            response += '_' + n.lower()
        else:
            response += n
    return response