| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- from pathlib import Path
- from types import SimpleNamespace
- from zbt.infrastructure.embedding.bge_model import (
- clear_bge_m3_model_cache,
- load_bge_m3_model,
- resolve_local_huggingface_snapshot,
- )
- def _create_complete_snapshot(cache_root: Path, revision: str = "revision-01") -> Path:
- repository = cache_root / "models--BAAI--bge-m3"
- snapshot = repository / "snapshots" / revision
- snapshot.mkdir(parents=True)
- (repository / "refs").mkdir()
- (repository / "refs" / "main").write_text(revision, encoding="utf-8")
- for filename in (
- "config.json",
- "tokenizer_config.json",
- "tokenizer.json",
- "model.safetensors",
- ):
- (snapshot / filename).write_text("fixture", encoding="utf-8")
- return snapshot
- def test_resolve_local_huggingface_snapshot_uses_complete_cached_model(
- tmp_path: Path,
- ) -> None:
- snapshot = _create_complete_snapshot(tmp_path)
- result = resolve_local_huggingface_snapshot("BAAI/bge-m3", cache_dir=tmp_path)
- assert result == str(snapshot.resolve())
- def test_resolve_local_huggingface_snapshot_keeps_remote_id_when_cache_incomplete(
- tmp_path: Path,
- ) -> None:
- repository = tmp_path / "models--BAAI--bge-m3" / "snapshots" / "incomplete"
- repository.mkdir(parents=True)
- (repository / "config.json").write_text("fixture", encoding="utf-8")
- result = resolve_local_huggingface_snapshot("BAAI/bge-m3", cache_dir=tmp_path)
- assert result == "BAAI/bge-m3"
- def test_load_bge_m3_model_reuses_one_process_instance(
- monkeypatch,
- tmp_path: Path,
- ) -> None:
- snapshot = _create_complete_snapshot(tmp_path)
- created_with: list[tuple[str, str]] = []
- class FakeBgeM3FlagModel:
- def __init__(self, model_path: str, **options: object) -> None:
- created_with.append((model_path, str(options["devices"])))
- monkeypatch.setitem(
- __import__("sys").modules,
- "FlagEmbedding",
- SimpleNamespace(BGEM3FlagModel=FakeBgeM3FlagModel),
- )
- clear_bge_m3_model_cache()
- first = load_bge_m3_model(
- "BAAI/bge-m3",
- "cpu",
- cache_dir=tmp_path,
- )
- second = load_bge_m3_model(
- "BAAI/bge-m3",
- "cpu",
- cache_dir=tmp_path,
- )
- assert first is second
- assert created_with == [(str(snapshot.resolve()), "cpu")]
- clear_bge_m3_model_cache()
|