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
env = common.is_number(5)
        self.assertTrue(env)
    def test_is_ip_address(self):
        env = common.is_ip_address("10.0.0.1")
        self.assertTrue(env)
        env = common.is_ip_address("abcde")
        self.assertFalse(env)
    def test_is_base64(self):
        env = common.is_base64("foobar")
        self.assertIsNone(env)
    def test_mktime(self):
        now = common.mktime(datetime.now())
        self.assertEqual(int(now), int(time.time()))
    def test_mktime_with_tz(self):
        
        dt = datetime(2001, 9, 9, 1, 46, 40, 0, tzinfo=pytz.utc)
        self.assertEqual(1000000000, int(common.mktime(dt)))
        dt = datetime(2001, 9, 9, 1, 46, 40, 0, tzinfo=pytz.timezone("EST"))
        self.assertEqual(1000000000 + (5 * 60 * 60), int(common.mktime(dt)))  
    def test_mktime_millis_with_tz(self):
        
        dt = datetime(2001, 9, 9, 1, 46, 40, 0, tzinfo=pytz.utc)
        self.assertEqual(1000000000, int(common.mktime(dt, millis=True) / 1000))
        dt = datetime(2001, 9, 9, 1, 46, 40, 0, tzinfo=pytz.timezone("EST"))
        self.assertEqual(
            1000000000 + (5 * 60 * 60), int(common.mktime(dt, millis=True)) / 1000
        )  
    def test_mktime_millis(self):