Spaces:
Sleeping
Sleeping
File size: 1,489 Bytes
494c89b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
"""
Базовый класс коллектора
"""
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ..core import DebugSession, DebugStep
class BaseCollector(ABC):
"""
Базовый класс для всех коллекторов данных.
Коллектор отвечает за:
1. Инжект перехватчиков в страницу (inject)
2. Периодический сбор данных (collect)
3. Обработку начала/конца шага (on_step_start/on_step_end)
"""
name: str = "base"
def __init__(self, session: 'DebugSession'):
self.session = session
self._data = []
@property
def page(self):
return self.session.page
def log(self, msg: str):
"""Логирование через сессию"""
self.session._log(f" [{self.name}] {msg}")
@abstractmethod
def inject(self):
"""Инжектит перехватчики в страницу"""
pass
@abstractmethod
def collect(self) -> list:
"""Собирает накопленные данные"""
pass
def on_step_start(self, step_name: str):
"""Вызывается при начале шага"""
pass
def on_step_end(self, step: 'DebugStep'):
"""Вызывается при завершении шага"""
pass
|