import textattack # We have to use Attack class from text attack lib for our abc
from abc import abstractmethod
[документация]
class Attack(textattack.Attack):
"""
Abstract class for creating attack. Takes all needed components of textattack Attack class.
Via it's methods we can theoretically tinker with parent class fields/methods or create a new ones.
# Добавить метод get_attack_info() с информацией о типе атаки по MITRE ATLAS.
# Нужен метод validate() для проверки совместимости атаки с моделью.
"""
[документация]
@staticmethod
@abstractmethod
def build(model_wrapper, **kwargs):
raise NotImplementedError
# Реализовать фабрику атак для динамической конфигурации и создания атак.
# Фабрика должна поддерживать инициализацию классов атак различных типов
# и создание атак из конфигурации с передачей параметров,
# а также валидацию совместимости атаки с моделью