confidence/names.py (22 lines of code) (raw):

import dataclasses @dataclasses.dataclass class FlagName(object): flag: str @classmethod def parse(cls, resource_name: str) -> "FlagName": components = resource_name.split("/", 2) if components[0] != "flags": raise ValueError("name error") return cls(components[1]) def __str__(self) -> str: return f"flags/{self.flag}" @dataclasses.dataclass class VariantName(object): flag: str variant: str @classmethod def parse(cls, resource_name: str) -> "VariantName": components = resource_name.split("/") if components[0] != "flags" or components[2] != "variants": raise ValueError("name error") return cls(components[1], components[3])