32k pixel as hard group limit, better manual resolution support
This commit is contained in:
1 parent
a9c0703f03
commit
5009831c7c
9 files changed
+322
-58
No files matched your search
+28
-4
@@ -19,6 +19,7 @@ from PIL import Image
|
||||
from pypdf import PdfReader, PdfWriter
|
||||
|
||||
from copienator import (
|
||||
CliError,
|
||||
EvaluationWorkspace,
|
||||
WorkspaceNotFoundError,
|
||||
WorkspaceValidationError,
|
||||
@@ -2058,7 +2059,23 @@ class StandardCliTests(unittest.TestCase):
|
||||
self.assertEqual(groups, [["Ex 1"], ["Ex 2"]])
|
||||
editor.assert_not_called()
|
||||
|
||||
def test_grouped_batching_does_not_split_one_student(self) -> None:
|
||||
def test_grouped_batching_looks_ahead_to_keep_below_the_hard_limit(self) -> None:
|
||||
module = self.modules["annotating_by_label"]
|
||||
large = Image.new("RGB", (10, 80), "white")
|
||||
small = Image.new("RGB", (10, 15), "white")
|
||||
rendered = [
|
||||
("01", "Ex 1", large, 0, []),
|
||||
("02", "Ex 1", small, 0, []),
|
||||
("02", "Ex 2", small, 0, []),
|
||||
]
|
||||
with patch.object(module, "MAX_HEIGHT_PX", 100):
|
||||
batches = module.split_batches(rendered)
|
||||
self.assertEqual([len(batch) for batch in batches], [1, 2])
|
||||
self.assertTrue(
|
||||
all(sum(item[2].height for item in batch) <= 100 for batch in batches)
|
||||
)
|
||||
|
||||
def test_grouped_batching_never_splits_one_student(self) -> None:
|
||||
module = self.modules["annotating_by_label"]
|
||||
image = Image.new("RGB", (10, 60), "white")
|
||||
rendered = [
|
||||
@@ -2066,9 +2083,16 @@ class StandardCliTests(unittest.TestCase):
|
||||
("01", "Ex 2", image, 0, []),
|
||||
("02", "Ex 1", image, 0, []),
|
||||
]
|
||||
with patch.object(module, "MAX_HEIGHT_PX", 100):
|
||||
batches = module.split_batches(rendered)
|
||||
self.assertEqual([len(batch) for batch in batches], [2, 1])
|
||||
with patch.object(module, "MAX_HEIGHT_PX", 100), self.assertRaises(
|
||||
CliError
|
||||
) as raised:
|
||||
module.split_batches(rendered)
|
||||
self.assertIn("Copie01", str(raised.exception))
|
||||
self.assertIn("cannot be split", str(raised.exception))
|
||||
|
||||
def test_grouped_annotation_height_limit_is_32000_pixels(self) -> None:
|
||||
module = self.modules["annotating_by_label"]
|
||||
self.assertEqual(module.MAX_HEIGHT_PX, 32000)
|
||||
|
||||
|
||||
class WorkflowTests(unittest.TestCase):
|
||||
|
||||
Reference in new issue
Block a user