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