Spaces:
Sleeping
Sleeping
File size: 1,243 Bytes
744a170 |
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 |
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
|