Spaces:
Sleeping
Sleeping
""" | |
Класс для представления чанка документа. | |
""" | |
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." | |
) | |