import string class TOMLChar(str): def __init__(self, c): super().__init__() if len(self) > 1: raise ValueError("A TOML character must be of length 1") BARE = string.ascii_letters + string.digits + "-_" KV = "= \t" NUMBER = string.digits + "+-_.e" SPACES = " \t" NL = "\n\r" WS = SPACES + NL def is_bare_key_char(self) -> bool: """ Whether the character is a valid bare key name or not. """ return self in self.BARE def is_kv_sep(self) -> bool: """ Whether the character is a valid key/value separator or not. """ return self in self.KV def is_int_float_char(self) -> bool: """ Whether the character if a valid integer or float value character or not. """ return self in self.NUMBER def is_ws(self) -> bool: """ Whether the character is a whitespace character or not. """ return self in self.WS def is_nl(self) -> bool: """ Whether the character is a new line character or not. """ return self in self.NL def is_spaces(self) -> bool: """ Whether the character is a space or not """ return self in self.SPACES