changhe batch
This commit is contained in:
@@ -2,8 +2,9 @@ import inspect
|
||||
import logging
|
||||
import os
|
||||
from contextlib import AbstractContextManager
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from typing import Any, Callable, NamedTuple, Self, Sequence
|
||||
from typing import Any, Callable, Self, Sequence
|
||||
|
||||
LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO').upper()
|
||||
|
||||
@@ -18,7 +19,8 @@ class Status(Enum):
|
||||
FAIL = 'fail'
|
||||
|
||||
|
||||
class Result(NamedTuple):
|
||||
@dataclass(frozen=True)
|
||||
class Result:
|
||||
status: Status
|
||||
input_record: Any
|
||||
output: Any | None = None
|
||||
@@ -129,5 +131,8 @@ class BatchProcessor(AbstractContextManager):
|
||||
return Result(
|
||||
status=Status.FAIL,
|
||||
input_record=record,
|
||||
cause=exc,
|
||||
cause={
|
||||
'type': type(exc).__name__,
|
||||
'message': str(exc),
|
||||
},
|
||||
)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "layercake"
|
||||
version = "0.6.3"
|
||||
version = "0.6.4"
|
||||
description = "Packages shared dependencies to optimize deployment and ensure consistency across functions."
|
||||
readme = "README.md"
|
||||
authors = [
|
||||
|
||||
@@ -18,11 +18,18 @@ def test_batch():
|
||||
with processor(records=records, handler=record_handler) as p:
|
||||
processed_messages = p.process()
|
||||
|
||||
assert len(processed_messages) == 3
|
||||
assert processed_messages == (
|
||||
Result(status=Status.SUCCESS, input_record=True, output=True, cause=None),
|
||||
Result(status=Status.SUCCESS, input_record=True, output=True, cause=None),
|
||||
Result(
|
||||
status=Status.FAIL,
|
||||
input_record=False,
|
||||
output=None,
|
||||
cause={'type': 'ValueError', 'message': 'Invalid record'},
|
||||
),
|
||||
)
|
||||
|
||||
fail_record = processed_messages[2]
|
||||
assert isinstance(fail_record.cause, ValueError)
|
||||
assert str(fail_record.cause) == 'Invalid record'
|
||||
assert len(processed_messages) == 3
|
||||
|
||||
assert processor.successes == [True, True]
|
||||
assert processor.failures == [False]
|
||||
@@ -48,7 +55,7 @@ def test_batch_context():
|
||||
processed_messages = processor.process()
|
||||
|
||||
assert processed_messages == (
|
||||
Result(Status.SUCCESS, output=4, input_record=2),
|
||||
Result(Status.SUCCESS, output=6, input_record=3),
|
||||
Result(Status.SUCCESS, output=8, input_record=4),
|
||||
Result(status=Status.SUCCESS, input_record=2, output=4, cause=None),
|
||||
Result(status=Status.SUCCESS, input_record=3, output=6, cause=None),
|
||||
Result(status=Status.SUCCESS, input_record=4, output=8, cause=None),
|
||||
)
|
||||
|
||||
2
layercake/uv.lock
generated
2
layercake/uv.lock
generated
@@ -589,7 +589,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "layercake"
|
||||
version = "0.6.2"
|
||||
version = "0.6.4"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "arnparse" },
|
||||
|
||||
Reference in New Issue
Block a user