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
started = threading.Event()
        done = threading.Event()
        def run_method(*args, **kwargs):
            started.set()
            func_thread = kwargs["_thread"]
            
            func_thread._stop_event.wait()
            done.set()
        common.start_thread(run_method)
        self.assertTrue(started.wait(timeout=2))
        common.cleanup_threads_and_processes()
        self.assertTrue(done.wait(timeout=2))
    def test_proxy_map(self):
        old_http_proxy = config.OUTBOUND_HTTP_PROXY
        old_https_proxy = config.OUTBOUND_HTTPS_PROXY
        config.OUTBOUND_HTTP_PROXY = "http://localhost"
        config.OUTBOUND_HTTPS_PROXY = "https://localhost"
        assert {
            "http": config.OUTBOUND_HTTP_PROXY,
            "https": config.OUTBOUND_HTTPS_PROXY,
        } == common.get_proxies()
        config.OUTBOUND_HTTP_PROXY = ""
        assert {"https": config.OUTBOUND_HTTPS_PROXY} == common.get_proxies()
        config.OUTBOUND_HTTPS_PROXY = ""
        assert {} == common.get_proxies()
        config.OUTBOUND_HTTP_PROXY = old_http_proxy
        config.OUTBOUND_HTTPS_PROXY = old_https_proxy
class TestCommonFileOperations: