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
return s and "%s%s" % (s[0].lower(), s[1:])
def first_char_to_upper(s: str) -> str:
    return s and "%s%s" % (s[0].upper(), s[1:])
def format_number(number: float, decimals: int = 2):
    
    
    result = f"{number:.{decimals}f}"
    if "." in result:
        result = result.rstrip("0").rstrip(".")
    return result
def is_number(s: Any) -> bool:
    try:
        float(s)  
        return True
    except (TypeError, ValueError):
        return False
def to_number(s: Any) -> Union[int, float]:
    """Cast the string representation of the given object to a number (int or float), or raise ValueError."""
    try:
        return int(str(s))
    except ValueError:
        return float(str(s))
def is_mac_os() -> bool: