class LabelValidator(object):
  """ Helper class for validating that labels meet prefix requirements. """
  def __init__(self, app):
    self.app = app

    overridden_prefixes = app.config.get('LABEL_KEY_RESERVED_PREFIXES', [])
    for prefix in overridden_prefixes:
      if not prefix.endswith('.'):
        raise Exception('Prefix "%s" in LABEL_KEY_RESERVED_PREFIXES must end in a dot', prefix)

    default_prefixes = app.config.get('DEFAULT_LABEL_KEY_RESERVED_PREFIXES', [])
    self.reserved_prefixed_set = set(default_prefixes + overridden_prefixes)

  def has_reserved_prefix(self, label_key):
    """ Validates that the provided label key does not match any reserved prefixes. """
    for prefix in self.reserved_prefixed_set:
      if label_key.startswith(prefix):
        return True

    return False