Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/lightmem/configs/pre_compressor/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class PreCompressorConfig(BaseModel):

_model_configs: ClassVar[Dict[str, str]] = {
"llmlingua-2": "lightmem.configs.pre_compressor.llmlingua_2.LlmLingua2Config",
"entropy_compress": "lightmem.configs.pre_compressor.entropy_compress.EntropyCompressor"
"entropy_compress": "lightmem.configs.pre_compressor.entropy_compress.EntropyCompressorConfig"
}

configs: Dict[str, Any] = Field(
Expand Down Expand Up @@ -47,4 +47,4 @@ def load_config_class(self) -> 'PreCompressorConfig':

except (ImportError, AttributeError) as e:
raise ValueError(f"Could not load config class '{config_path}': {e}")
return self
return self
4 changes: 2 additions & 2 deletions src/lightmem/factory/pre_compressor/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
class PreCompressorFactory:
_MODEL_MAPPING: Dict[str, str] = {
"llmlingua-2": "lightmem.factory.pre_compressor.llmlingua_2.LlmLingua2Compressor",
"entropy_compress": "lightmem.factory.pre_compressor.entropy_compress.",
"entropy_compress": "lightmem.factory.pre_compressor.entropy_compress.EntropyCompressor",
}

@classmethod
Expand Down Expand Up @@ -53,4 +53,4 @@ def from_config(cls, config: PreCompressorConfig):
except Exception as e:
raise ValueError(
f"Failed to instantiate {model_name} compressor: {str(e)}"
) from e
) from e
37 changes: 37 additions & 0 deletions tests/test_pre_compressor_factory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from types import SimpleNamespace

from lightmem.configs.pre_compressor.base import PreCompressorConfig
from lightmem.configs.pre_compressor.entropy_compress import EntropyCompressorConfig
from lightmem.factory.pre_compressor.factory import PreCompressorFactory


def test_entropy_compressor_config_resolves_to_its_config_class():
config = PreCompressorConfig(model_name="entropy_compress")

assert isinstance(config.configs, EntropyCompressorConfig)


def test_entropy_compressor_factory_resolves_to_its_implementation(monkeypatch):
compressor_config = object()
imported = {}

class FakeEntropyCompressor:
def __init__(self, config=None):
self.config = config

def fake_import_module(module_path):
imported["module_path"] = module_path
return SimpleNamespace(EntropyCompressor=FakeEntropyCompressor)

monkeypatch.setattr(
"lightmem.factory.pre_compressor.factory.import_module",
fake_import_module,
)

compressor = PreCompressorFactory.from_config(
SimpleNamespace(model_name="entropy_compress", configs=compressor_config)
)

assert imported["module_path"] == "lightmem.factory.pre_compressor.entropy_compress"
assert isinstance(compressor, FakeEntropyCompressor)
assert compressor.config is compressor_config