in python/moz/l10n/formats/mf2/message_parser.py [0:0]
def variant(self, num_sel: int) -> tuple[tuple[str | CatchallKey, ...], Pattern]:
keys: list[str | CatchallKey] = []
ch = self.char()
while ch != "{" and ch != "":
if ch == "*":
keys.append(CatchallKey())
self.pos += 1
else:
keys.append(self.literal())
has_space = self.req_space()
if not has_space:
break
ch = self.char()
if len(keys) != num_sel:
raise MF2ParseError(
self,
f"Variant key mismatch, expected {num_sel} but found {len(keys)}",
)
return tuple(keys), self.quoted_pattern()