Use different seeds for retries
This commit is contained in:
1 parent
c58bbc3672
commit
b6c2a634ca
7 files changed
+91
-10
No files matched your search
@@ -9,6 +9,7 @@ from unittest.mock import Mock, patch
|
||||
|
||||
from copienator import CliError, EvaluationWorkspace, ExitCode
|
||||
from copienator.commands import gemini_for_labels as labels
|
||||
from copienator.copy_errors import mark_copy_error
|
||||
|
||||
|
||||
class LabelTimeoutTests(unittest.TestCase):
|
||||
@@ -73,6 +74,25 @@ class LabelTimeoutTests(unittest.TestCase):
|
||||
self.assertEqual(options.retry_options.attempts, 1)
|
||||
self.assertTrue((self.workspace.copies_dir / "Copie01_01.json").exists())
|
||||
|
||||
def test_flagged_reruns_get_fresh_seeds_and_replace_existing_results(self):
|
||||
pdf = self.workspace.copies_dir / "Copie01.pdf"
|
||||
pdf.touch()
|
||||
mark_copy_error(self.workspace, pdf, "Review", source="plotting")
|
||||
self.client.models.generate_content.return_value = self.response
|
||||
with patch.object(labels, "selected_images", return_value=(self.images[:1], [])), \
|
||||
patch.object(labels, "fresh_seed", side_effect=[101, 202]), \
|
||||
patch.object(labels.config, "THINKING_LEVEL_FOR_LABEL", "medium"):
|
||||
for _ in range(2):
|
||||
self.assertEqual(labels.run(
|
||||
self.workspace, [], marked=True, client=self.client,
|
||||
sleep=lambda _: None, max_workers=1,
|
||||
), ExitCode.SUCCESS)
|
||||
configs = [call.kwargs["config"]
|
||||
for call in self.client.models.generate_content.call_args_list]
|
||||
self.assertEqual([cfg.seed for cfg in configs], [101, 202])
|
||||
self.assertEqual([cfg.thinking_config.thinking_level.value for cfg in configs],
|
||||
["MEDIUM", "MEDIUM"])
|
||||
|
||||
def test_retries_use_low_thinking_and_next_image_restores_configured_level(self):
|
||||
self.client.models.generate_content.side_effect = [
|
||||
TimeoutError(), TimeoutError(), self.response, self.response,
|
||||
@@ -87,6 +107,8 @@ class LabelTimeoutTests(unittest.TestCase):
|
||||
["MEDIUM", "LOW", "LOW", "MEDIUM"],
|
||||
)
|
||||
self.assertTrue(all(cfg.http_options.timeout == 80_000 for cfg in configs))
|
||||
self.assertNotEqual(configs[0].seed, configs[1].seed)
|
||||
self.assertNotEqual(configs[1].seed, configs[2].seed)
|
||||
|
||||
def test_exhaustion_defers_dependent_pages_but_other_copies_finish_and_resume(self):
|
||||
self.client.models.generate_content.side_effect = [
|
||||
|
||||
Reference in new issue
Block a user