When generating API stubs with the scaffold utility using, e.g., `python -m localstack.aws.scaffold sns`,
the scaffold creates method names from operation names, which are ugly when acronyms (subsequent uppercase characters that belong together).

Example:
`CreateSMSSandboxPhoneNumber` -> `create_s_m_s_sandbox_phone_number`

it would be nicer to have `create_sms_sandbox_phone_number`

This is a limitation of this method: https://github.com/localstack/localstack/blob/1888e66b85d7e6a8ee457bc7a732984fcf7aa830/localstack/utils/common.py#L978-L979
proxy_map = {}
    if config.OUTBOUND_HTTP_PROXY:
        proxy_map["http"] = config.OUTBOUND_HTTP_PROXY
    if config.OUTBOUND_HTTPS_PROXY:
        proxy_map["https"] = config.OUTBOUND_HTTPS_PROXY
    return proxy_map
def download(url: str, path: str, verify_ssl: bool = True, timeout: float = None):
    """Downloads file at url to the given path. Raises TimeoutError if the optional timeout (in secs) is reached."""
    
    s = requests.Session()
    proxies = get_proxies()
    if proxies:
        s.proxies.update(proxies)
    
    
    _verify = os.getenv("REQUESTS_CA_BUNDLE", verify_ssl)
    r = None
    try:
        r = s.get(url, stream=True, verify=_verify, timeout=timeout)
        
        if not r.ok:
            raise Exception("Failed to download %s, response code %s" % (url, r.status_code))
        total = 0
        if not os.path.exists(os.path.dirname(path)):
            os.makedirs(os.path.dirname(path))
        LOG.debug(
            "Starting download from %s to %s (%s bytes)", url, path, r.headers.get("Content-Length")