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
markup = "<a href='foobar'>baz</a>"
        doc = common.parse_json_or_yaml(markup)
        self.assertEqual(markup, doc)  
    def test_parse_json_or_yaml_with_empty_string_returns_none(self):
        doc = common.parse_json_or_yaml("")
        self.assertIsNone(doc)
    def test_format_bytes(self):
        fn = common.format_bytes
        self.assertEqual("1B", fn(1))
        self.assertEqual("100B", fn(100))
        self.assertEqual("999B", fn(999))
        self.assertEqual("1KB", fn(1e3))
        self.assertEqual("1MB", fn(1e6))
        self.assertEqual("10MB", fn(1e7))
        self.assertEqual("100MB", fn(1e8))
        self.assertEqual("1GB", fn(1e9))
        self.assertEqual("1TB", fn(1e12))
        
        self.assertEqual("1.1TB", fn(1e12 + 1e11))
        self.assertEqual("1000TB", fn(1e15))
        
        self.assertEqual("123B", fn("123"))
        
        self.assertEqual("n/a", fn("abc"))
        
        self.assertEqual("n/a", fn(-1))  
    def test_format_number(self):