from enum import Enum





class PolicyCategory(Enum):



    """策略类型枚举"""

    #流控

    FLOW = "FLOW"



    #准入

    ADMISSION = "ADMISSION"



    """以下预留"""

    #降级

    DEGRADE = "DEGRADE"



    AUTHORITY = "AUTHORITY"



    SYSTEM = "SYSTEM"



    ISOLATION = "ISOLATION"



    NET = "NET"



    RETRY = "RETRY"



    TIMELIMITER = "TIMELIMITER"



    @classmethod

    def from_string(cls, name: str):

        if name is None:

            return None

        for category in cls:

            if category.name.lower() == name.lower():

                return category

        return None



    @classmethod

    def is_admission(cls, category_str: str):

        """检查是否为准入策略"""

        category = cls.from_string(category_str)

        return category == cls.ADMISSION if category else False