original-label-> information
This commit is contained in:
1 parent
5009831c7c
commit
96c00fa941
5 files changed
+81
No files matched your search
@@ -8,10 +8,62 @@ import pymupdf
|
||||
|
||||
from copienator import CliError, EvaluationWorkspace, atomic_write_json, read_json
|
||||
from copienator.commands import correction, resolve_manual
|
||||
from copienator.answer_origins import origins_for, save_origins
|
||||
from copienator.annotation_data import load_annotation_data
|
||||
from copienator_gui.app import has_manual_conflicts
|
||||
|
||||
|
||||
class ManualResolutionStateTests(unittest.TestCase):
|
||||
def test_automatic_additional_content_records_origin_but_wrong_label_does_not(self):
|
||||
for kind in ("additional-answer", "wrong-label"):
|
||||
with self.subTest(kind=kind), tempfile.TemporaryDirectory() as temporary:
|
||||
workspace = self.fixture(Path(temporary), "->")
|
||||
copies = workspace.copies_dir / "Copie01"
|
||||
(copies / "B.pdf").unlink()
|
||||
(workspace.root / "labels").write_text("A\nB\n")
|
||||
with (
|
||||
patch.object(correction, "INPUT_DIR", workspace.root, create=True),
|
||||
patch.object(correction, "COPIES_DIR", workspace.copies_dir, create=True),
|
||||
patch.object(correction, "GROUPS_DIR", workspace.groups_dir, create=True),
|
||||
patch.object(correction, "enonce_total", return_value=""),
|
||||
patch.object(correction.prompting, "request_for_additional_answer", return_value=([], {})),
|
||||
patch.object(correction.prompting, "request_for_wrong_label", return_value=([], {})),
|
||||
patch.object(correction, "call_gemini_with_retries", return_value='["B"]' if kind == "additional-answer" else '"B"'),
|
||||
patch.object(correction, "reserve_next_group_idx", return_value=0),
|
||||
patch.object(correction.grouping, "get_pdf_height", return_value=200),
|
||||
patch.object(correction.grouping, "create_jpg"),
|
||||
):
|
||||
correction.handle_label_errors("01", "A", {"error": kind}, copies / "A.pdf")
|
||||
self.assertEqual(
|
||||
origins_for(workspace.root, "01", "B", copies / "B_new.pdf"),
|
||||
["A"] if kind == "additional-answer" else [],
|
||||
)
|
||||
|
||||
def test_target_provenance_only_for_uncut_retained_sources(self):
|
||||
for operator in (*resolve_manual.OPERATORS, "c{50}1>", "c{50}2x"):
|
||||
with self.subTest(operator=operator), tempfile.TemporaryDirectory() as temporary:
|
||||
workspace = self.fixture(Path(temporary), operator)
|
||||
resolve_manual.resolve_manual(workspace)
|
||||
target = resolve_manual.get_actual_pdf(workspace.copies_dir, "01", "B")
|
||||
self.assertEqual(
|
||||
origins_for(workspace.root, "01", "B", target),
|
||||
["A"] if operator in ("->", "-x") else [],
|
||||
)
|
||||
|
||||
def test_provenance_survives_new_correction_but_not_replaced_pdf(self):
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
workspace = self.fixture(Path(temporary), "->")
|
||||
target = workspace.copies_dir / "Copie01" / "B.pdf"
|
||||
save_origins(workspace.root, "01", "B", target, ["A", "A"])
|
||||
atomic_write_json(workspace.correction_file, {
|
||||
"B": [[{"id": "01", "result": {"score": 4, "error": "", "feedback": []}}]]
|
||||
})
|
||||
self.assertEqual(origins_for(workspace.root, "01", "B", target), ["A"])
|
||||
loaded = load_annotation_data(workspace)
|
||||
self.assertEqual(loaded.data["01"]["B"]["result"]["content_origins"], ["A"])
|
||||
target.write_bytes(b"replacement")
|
||||
self.assertEqual(origins_for(workspace.root, "01", "B", target), [])
|
||||
|
||||
def test_merge_into_missing_target_uses_source_and_schedules_redo(self):
|
||||
for operator in ("->", "x>"):
|
||||
for target in ("B|", "|B"):
|
||||
|
||||
Reference in new issue
Block a user