Rewrite leftover LLM factory (DeepSeek-only), storage, validation.
Anthropic/Gemini names resolve to DeepSeek. Extraction import path re-exports datasheet_extract. Inherited copies stay on disk. storage_gcs unused, skipped.
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
"""Leftover service cores resolve from src; LLM factory stays on DeepSeek."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import backend.periscopex.utils as utils
|
||||
import backend.services.admin_settings as admin_settings
|
||||
import backend.services.api_logs as api_logs
|
||||
import backend.services.datasheet_store as datasheet_store
|
||||
import backend.services.llm.factory as factory
|
||||
import backend.services.storage as storage
|
||||
from backend.periscopex.utils import natural_sort_key, safe_mpn
|
||||
from backend.services.admin_settings import version_is_stale
|
||||
from backend.services.datasheet_store import (
|
||||
compute_md5_from_bytes,
|
||||
resolve_datasheet,
|
||||
store_datasheet_bytes,
|
||||
)
|
||||
from backend.services.llm.factory import get_provider_by_name
|
||||
from backend.services.storage import GENERATION_NEW, LocalStorageBackend, StaleGeneration
|
||||
|
||||
|
||||
def _assert_src(mod, name: str) -> None:
|
||||
path = Path(mod.__file__).resolve()
|
||||
assert path.name == name
|
||||
assert "src" in path.parts
|
||||
assert "Native Periscope overlay" not in path.read_text(encoding="utf-8")[:400]
|
||||
|
||||
|
||||
def test_core_service_modules_are_src():
|
||||
for mod, name in (
|
||||
(factory, "factory.py"),
|
||||
(storage, "storage.py"),
|
||||
(api_logs, "api_logs.py"),
|
||||
(datasheet_store, "datasheet_store.py"),
|
||||
(admin_settings, "admin_settings.py"),
|
||||
(utils, "utils.py"),
|
||||
):
|
||||
_assert_src(mod, name)
|
||||
|
||||
|
||||
def test_factory_routes_anthropic_and_gemini_names_to_deepseek(monkeypatch):
|
||||
from backend.config import settings
|
||||
|
||||
monkeypatch.setattr(settings, "deepseek_api_key", "sk-test")
|
||||
get_provider_by_name.cache_clear()
|
||||
try:
|
||||
assert get_provider_by_name("deepseek").name == "deepseek"
|
||||
assert get_provider_by_name("anthropic").name == "deepseek"
|
||||
assert get_provider_by_name("gemini").name == "deepseek"
|
||||
finally:
|
||||
get_provider_by_name.cache_clear()
|
||||
|
||||
|
||||
def test_safe_mpn_and_natural_sort():
|
||||
assert safe_mpn("A/B:C") == "A_B_C"
|
||||
assert sorted(["R10", "R2", "R1"], key=natural_sort_key) == ["R1", "R2", "R10"]
|
||||
|
||||
|
||||
def test_local_storage_generation_and_datasheet_roundtrip(tmp_path: Path):
|
||||
backend = LocalStorageBackend(tmp_path)
|
||||
backend.write_json_if_match("k.json", {"a": 1}, GENERATION_NEW)
|
||||
try:
|
||||
backend.write_json_if_match("k.json", {"a": 2}, GENERATION_NEW)
|
||||
raise AssertionError("expected StaleGeneration")
|
||||
except StaleGeneration:
|
||||
pass
|
||||
pdf = b"%PDF-1.4 fake"
|
||||
key = store_datasheet_bytes(backend, pdf, "ABC/1")
|
||||
assert key.endswith(".pdf")
|
||||
assert resolve_datasheet(backend, "ABC/1") == key
|
||||
assert compute_md5_from_bytes(pdf)
|
||||
assert version_is_stale("1.0.0", "2.0.0")
|
||||
assert not version_is_stale("2.0.0", "0.0.0")
|
||||
Reference in New Issue
Block a user