# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Module for tag-related helper functions."""
from typing import Iterable, Type
from flake_suppressor_common import common_typing as ct
TagUtils = None
# TODO(crbug.com/358591565): Refactor this to remove the need for global
# statements.
def SetTagUtilsImplementation(impl: Type['BaseTagUtils']) -> None:
global TagUtils # pylint: disable=global-statement
assert issubclass(impl, BaseTagUtils)
TagUtils = impl()
class BaseTagUtils():
def RemoveIgnoredTags(self, tags: Iterable[str]) -> ct.TagTupleType:
"""Removes ignored tags from |tags|.
Here we return all the tags as is, since child classes will do the
implementation specific filtering.
Args:
tags: An iterable of strings containing tags
Returns:
A tuple of strings containing the contents of |tags| with ignored tags
removed.
"""
return tuple(tags)
TagUtils = BaseTagUtils()