Ref : https://github.com/python/cpython/pull/25174

https://github.com/localstack/localstack/blob/5a5edcd9d9ccbd6a56f23d71e3a1131b8c814996/localstack/utils/common.py#L324
return re.sub(r'(?<!^)(?=[A-Z])', '_', string).replace('__', '_').lower()
def snake_to_camel_case(string, capitalize_first=True):
    components = string.split('_')
    start_idx = 0 if capitalize_first else 1
    components = [x.title() for x in components[start_idx:]]
    return ''.join(components)
def base64_to_hex(b64_string):
    return binascii.hexlify(base64.b64decode(b64_string))
def obj_to_xml(obj):
    """ Return an XML representation of the given object (dict, list, or primitive).
        Does NOT add a common root element if the given obj is a list.
        Does NOT work for nested dict structures. """
    if isinstance(obj, list):
        return ''.join([obj_to_xml(o) for o in obj])
    if isinstance(obj, dict):
        return ''.join(['<{k}>{v}</{k}>'.format(k=k, v=obj_to_xml(v)) for (k, v) in obj.items()])
    return str(obj)
def now_utc(millis=False):
    return mktime(datetime.utcnow(), millis=millis)
def now(millis=False):
    return mktime(datetime.now(), millis=millis)
def mktime(timestamp, millis=False):
    if millis:
        epoch = datetime.utcfromtimestamp(0)
        return (timestamp - epoch).total_seconds()
    return calendar.timegm(timestamp.timetuple())
def mkdir(folder):