chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
"""Cache-correctness proof for per-file engine params (Phase 2).
|
||||
|
||||
A per-file override MUST participate in the raw-bundle cache signature (so an
|
||||
overridden document does not hit a bundle parsed with different params) AND must
|
||||
reach the live request. These tests assert both for MinerU and Docling.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# MinerU
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
|
||||
def test_mineru_signature_changes_with_page_range(monkeypatch):
|
||||
monkeypatch.setenv("MINERU_API_MODE", "official")
|
||||
from lightrag.parser.external.mineru.cache import current_mineru_options_signature
|
||||
|
||||
base = current_mineru_options_signature()
|
||||
ov1 = current_mineru_options_signature({"page_range": "1-3"})
|
||||
ov2 = current_mineru_options_signature({"page_range": "1-3,5"})
|
||||
assert base != ov1 != ov2 and base != ov2
|
||||
# No spurious invalidation: no override == bare env signature.
|
||||
assert current_mineru_options_signature(None) == base
|
||||
|
||||
|
||||
def test_mineru_signature_changes_with_language_and_parse_method(monkeypatch):
|
||||
monkeypatch.setenv("MINERU_API_MODE", "local")
|
||||
from lightrag.parser.external.mineru.cache import current_mineru_options_signature
|
||||
|
||||
base = current_mineru_options_signature()
|
||||
assert current_mineru_options_signature({"language": "en"}) != base
|
||||
assert current_mineru_options_signature({"local_parse_method": "ocr"}) != base
|
||||
|
||||
|
||||
def test_mineru_options_reflect_override(monkeypatch):
|
||||
monkeypatch.setenv("MINERU_API_MODE", "official")
|
||||
from lightrag.parser.external.mineru.cache import MinerUParserOptions
|
||||
|
||||
opts = MinerUParserOptions.from_env(
|
||||
overrides={"language": "en", "page_range": "1-3,5"}
|
||||
)
|
||||
assert opts.language == "en" and opts.page_ranges == "1-3,5"
|
||||
|
||||
|
||||
def test_mineru_local_bounds_from_page_range_override():
|
||||
from lightrag.parser.external.mineru.cache import MinerUParserOptions
|
||||
|
||||
opts = MinerUParserOptions.from_env(
|
||||
api_mode="local", overrides={"page_range": "2-4"}
|
||||
)
|
||||
# local_page_bounds is 0-based.
|
||||
assert opts.local_start_page_id == 1 and opts.local_end_page_id == 3
|
||||
|
||||
|
||||
def test_mineru_request_payload_reflects_override(monkeypatch):
|
||||
monkeypatch.setenv("MINERU_API_MODE", "official")
|
||||
monkeypatch.setenv("MINERU_OFFICIAL_ENDPOINT", "https://mineru.net")
|
||||
monkeypatch.setenv("MINERU_API_TOKEN", "test-token")
|
||||
from lightrag.parser.external.mineru.client import MinerURawClient
|
||||
|
||||
client = MinerURawClient(overrides={"language": "en", "page_range": "1-3,5"})
|
||||
payload = client._official_payload("doc.pdf")
|
||||
assert payload["language"] == "en"
|
||||
assert payload["files"][0]["page_ranges"] == "1-3,5"
|
||||
|
||||
|
||||
def test_mineru_local_form_reflects_parse_method(monkeypatch):
|
||||
monkeypatch.setenv("MINERU_API_MODE", "local")
|
||||
monkeypatch.setenv("MINERU_LOCAL_ENDPOINT", "http://127.0.0.1:8000")
|
||||
from lightrag.parser.external.mineru.client import MinerURawClient
|
||||
|
||||
client = MinerURawClient(overrides={"local_parse_method": "ocr"})
|
||||
assert client._local_form_data()["parse_method"] == "ocr"
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Docling
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
|
||||
def test_docling_snapshot_and_signature_reflect_force_ocr():
|
||||
from lightrag.parser.external.docling.cache import (
|
||||
compute_options_signature,
|
||||
snapshot_tunable_env,
|
||||
)
|
||||
from lightrag.parser.external.docling.client import FIXED_CONSTANTS
|
||||
|
||||
assert snapshot_tunable_env({"force_ocr": False})["DOCLING_FORCE_OCR"] == "false"
|
||||
base = compute_options_signature(
|
||||
tunable_env=snapshot_tunable_env(), fixed_constants=FIXED_CONSTANTS
|
||||
)
|
||||
ov = compute_options_signature(
|
||||
tunable_env=snapshot_tunable_env({"force_ocr": False}),
|
||||
fixed_constants=FIXED_CONSTANTS,
|
||||
)
|
||||
assert base != ov
|
||||
|
||||
|
||||
def test_docling_client_reflects_force_ocr_override(monkeypatch):
|
||||
monkeypatch.setenv("DOCLING_ENDPOINT", "http://localhost:5001")
|
||||
from lightrag.parser.external.docling.client import DoclingRawClient
|
||||
|
||||
client = DoclingRawClient(overrides={"force_ocr": False})
|
||||
assert client.force_ocr is False
|
||||
Reference in New Issue
Block a user