from typing import Optional import utils.meta @utils.meta.JSONClass class Segment: ''' Used for segment manipulation instead of { 'from': ..., 'to': ... } dict ''' def __init__( self, from_timestamp: int, to_timestamp: int, _id: Optional[str] = None, analytic_unit_id: Optional[str] = None, labeled: Optional[bool] = None, deleted: Optional[bool] = None, message: Optional[str] = None ): if to_timestamp < from_timestamp: raise ValueError(f'Can`t create segment with to < from: {to_timestamp} < {from_timestamp}') self.from_timestamp = from_timestamp self.to_timestamp = to_timestamp self._id = _id self.analytic_unit_id = analytic_unit_id self.labeled = labeled self.deleted = deleted self.message = message @utils.meta.JSONClass class AnomalyDetectorSegment(Segment): ''' Used for segment manipulation instead of { 'from': ..., 'to': ..., 'data': ... } dict ''' def __init__( self, from_timestamp: int, to_timestamp: int, data = [], _id: Optional[str] = None, analytic_unit_id: Optional[str] = None, labeled: Optional[bool] = None, deleted: Optional[bool] = None, message: Optional[str] = None ): super().__init__( from_timestamp, to_timestamp, _id, analytic_unit_id, labeled, deleted, message ) self.data = data