Spaces:
Sleeping
Sleeping
from ..chunking.chunking_strategy import ChunkingStrategy | |
class _ChunkingRegistry: | |
def __init__(self): | |
self._chunking_strategies: dict[str, ChunkingStrategy] = {} | |
def register(self, name: str, strategy: ChunkingStrategy): | |
self._chunking_strategies[name] = strategy | |
def get(self, name: str) -> ChunkingStrategy: | |
return self._chunking_strategies[name] | |
def get_names(self) -> list[str]: | |
return list(self._chunking_strategies.keys()) | |
def __len__(self) -> int: | |
return len(self._chunking_strategies) | |
def __contains__(self, name: str | ChunkingStrategy) -> bool: | |
if isinstance(name, ChunkingStrategy): | |
return name in self._chunking_strategies.values() | |
return name in self._chunking_strategies | |
def __dict__(self) -> dict: | |
return self._chunking_strategies | |
def __getitem__(self, name: str) -> ChunkingStrategy: | |
return self._chunking_strategies[name] | |
chunking_registry = _ChunkingRegistry() | |
def register_chunking_strategy(name: str | None = None): | |
def decorator(cls: type[ChunkingStrategy]) -> type[ChunkingStrategy]: | |
chunking_registry.register(name or cls.__name__, cls) | |
return cls | |
return decorator | |