Source code for panda_guard.role.defenses

# encoding: utf-8
# Author    : Floyed<Floyed_Shen@outlook.com>
# Datetime  : 2024/8/31 20:57
# User      : yu
# Product   : PyCharm
# Project   : panda-guard
# File      : __init__.py.py
# explain   :


from panda_guard.role.defenses.base import (
    BaseDefender,
    BaseDefenderConfig,
    REJECT_RESPONSE,
)

from panda_guard.utils import ComponentRegistry

defender_registry = ComponentRegistry[BaseDefender](
    "defender",
    BaseDefender,
    "panda_guard.defenders"
)

config_registry = ComponentRegistry[BaseDefenderConfig](
    "defender_config",
    BaseDefenderConfig,
    "panda_guard.defender_configs"
)

[docs]def create_defender(config: BaseDefenderConfig) -> BaseDefender: return defender_registry.create_component(config)
def __getattr__(name): try: if name.endswith("Config"): return config_registry.get_component_class(name) else: if name == "RepeDefender": from panda_guard.role.defenses.repe import RepeDefender from panda_guard.role.defenses.repe_utils import repe_pipeline_registry repe_pipeline_registry() return RepeDefender return defender_registry.get_component_class(name) except ValueError: raise AttributeError(f"module 'panda_guard.role.defenses' has no attribute '{name}'")