Spaces:
Runtime error
Runtime error
| """ | |
| Класс для представления чанка документа. | |
| """ | |
| from dataclasses import dataclass | |
| from .linker_entity import LinkerEntity, register_entity | |
| class Chunk(LinkerEntity): | |
| """ | |
| Класс для представления чанка документа в системе извлечения и сборки. | |
| Attributes: | |
| chunk_index: Порядковый номер чанка в документе (0-based). | |
| Используется для восстановления порядка при сборке. | |
| """ | |
| chunk_index: int | None = None | |
| def deserialize(cls, data: LinkerEntity) -> 'Chunk': | |
| """ | |
| Десериализует Chunk из объекта LinkerEntity. | |
| Базовый класс Chunk не должен использоваться напрямую, | |
| все конкретные реализации должны переопределить этот метод. | |
| Args: | |
| data: Объект LinkerEntity для преобразования в Chunk | |
| Raises: | |
| NotImplementedError: Метод должен быть переопределен в дочерних классах | |
| """ | |
| if cls == Chunk: | |
| # Если это прямой вызов на базовом классе Chunk, выбрасываем исключение | |
| raise NotImplementedError( | |
| "Базовый класс Chunk не поддерживает десериализацию. " | |
| "Используйте конкретную реализацию Chunk (например, FixedSizeChunk)." | |
| ) | |
| # Если вызывается из дочернего класса, который не переопределил метод, | |
| # выбрасываем более конкретную ошибку | |
| raise NotImplementedError( | |
| f"Класс {cls.__name__} должен реализовать метод deserialize." | |
| ) | |