from typing import TypeVar, Generic

from olc.bean.olc_config_rule import BasePolicy
from olc.bean.tag_group import TagGroup

T = TypeVar("T", bound=BasePolicy)


class MatchWrapper(Generic[T]):

    def __init__(self, tag_group: TagGroup, policy: T):
        self.policy = policy
        self.tag_group = tag_group

    def get_policy(self) -> T:
        return self.policy

    def __repr__(self):
        return f"Matchwrapper(tag_group = {self.tag_group}, policy = {self.policy})"

    def __str__(self):
        return self.__repr__()