update batch

This commit is contained in:
2025-05-30 15:32:31 -03:00
parent efd962cdba
commit b048febbd5
24 changed files with 455 additions and 69 deletions

View File

@@ -20,8 +20,9 @@ class Status(Enum):
class Result(NamedTuple):
status: Status
cause: Any
record: Any
input_record: Any
output: Any | None = None
cause: Any | None = None
class BatchProcessor(AbstractContextManager):
@@ -112,7 +113,12 @@ class BatchProcessor(AbstractContextManager):
result = self.handler(record)
self.successes.append(record)
return Result(Status.SUCCESS, result, record)
return Result(
status=Status.SUCCESS,
output=result,
input_record=record,
)
except Exception as exc:
exc_str = f'{type(exc).__name__}: {exc}'
logger.debug(f'Record processing exception: {exc_str}')
@@ -120,4 +126,8 @@ class BatchProcessor(AbstractContextManager):
self.exceptions.append(exc)
self.failures.append(record)
return Result(Status.FAIL, exc_str, record)
return Result(
status=Status.FAIL,
input_record=record,
cause=exc,
)

View File

@@ -1,6 +1,6 @@
[project]
name = "layercake"
version = "0.6.2"
version = "0.6.3"
description = "Packages shared dependencies to optimize deployment and ensure consistency across functions."
readme = "README.md"
authors = [

View File

@@ -18,11 +18,11 @@ def test_batch():
with processor(records=records, handler=record_handler) as p:
processed_messages = p.process()
assert processed_messages == (
Result(Status.SUCCESS, True, True),
Result(Status.SUCCESS, True, True),
Result(Status.FAIL, 'ValueError: Invalid record', False),
)
assert len(processed_messages) == 3
fail_record = processed_messages[2]
assert isinstance(fail_record.cause, ValueError)
assert str(fail_record.cause) == 'Invalid record'
assert processor.successes == [True, True]
assert processor.failures == [False]
@@ -30,9 +30,7 @@ def test_batch():
with processor(records=(False,), handler=record_handler):
processed_messages = processor.process()
assert processed_messages == (
Result(Status.FAIL, 'ValueError: Invalid record', False),
)
assert processed_messages[0].status == Status.FAIL
assert processor.successes == []
assert processor.failures == [False]
@@ -50,7 +48,7 @@ def test_batch_context():
processed_messages = processor.process()
assert processed_messages == (
Result(Status.SUCCESS, 4, 2),
Result(Status.SUCCESS, 6, 3),
Result(Status.SUCCESS, 8, 4),
Result(Status.SUCCESS, output=4, input_record=2),
Result(Status.SUCCESS, output=6, input_record=3),
Result(Status.SUCCESS, output=8, input_record=4),
)