Skip to content

Commit 404530f

Browse files
committed
improv: rename to event_parser as per Tom's review
1 parent bcb763b commit 404530f

File tree

6 files changed

+30
-22
lines changed

6 files changed

+30
-22
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1-
"""Advanced parser utility
1+
"""Advanced event_parser utility
22
"""
33
from . import envelopes
44
from .envelopes import BaseEnvelope
55
from .exceptions import SchemaValidationError
6-
from .parser import parser
6+
from .parser import event_parser
77
from .pydantic import BaseModel, root_validator, validator
88

9-
__all__ = ["parser", "envelopes", "BaseEnvelope", "BaseModel", "validator", "root_validator", "SchemaValidationError"]
9+
__all__ = [
10+
"event_parser",
11+
"envelopes",
12+
"BaseEnvelope",
13+
"BaseModel",
14+
"validator",
15+
"root_validator",
16+
"SchemaValidationError",
17+
]

aws_lambda_powertools/utilities/parser/parser.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313

1414
@lambda_handler_decorator
15-
def parser(
15+
def event_parser(
1616
handler: Callable[[Dict, Any], Any],
1717
event: Dict[str, Any],
1818
context: LambdaContext,
@@ -42,7 +42,7 @@ class Order(BaseModel):
4242
description: str
4343
...
4444
45-
@parser(schema=Order)
45+
@event_parser(schema=Order)
4646
def handler(event: Order, context: LambdaContext):
4747
...
4848
@@ -53,7 +53,7 @@ class Order(BaseModel):
5353
description: str
5454
...
5555
56-
@parser(schema=Order, envelope=envelopes.EVENTBRIDGE)
56+
@event_parser(schema=Order, envelope=envelopes.EVENTBRIDGE)
5757
def handler(event: Order, context: LambdaContext):
5858
...
5959
@@ -87,7 +87,7 @@ def handler(event: Order, context: LambdaContext):
8787
def parse(event: Dict[str, Any], schema: BaseModel, envelope: Optional[BaseEnvelope] = None) -> Any:
8888
"""Standalone function to parse & validate events using Pydantic models
8989
90-
Typically used when you need fine-grained control over error handling compared to parser decorator.
90+
Typically used when you need fine-grained control over error handling compared to event_parser decorator.
9191
9292
Example
9393
-------

tests/functional/parser/test_dynamodb.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import pytest
44

5-
from aws_lambda_powertools.utilities.parser import envelopes, exceptions, parser
5+
from aws_lambda_powertools.utilities.parser import envelopes, event_parser, exceptions
66
from aws_lambda_powertools.utilities.typing import LambdaContext
77
from tests.functional.parser.schemas import MyAdvancedDynamoBusiness, MyDynamoBusiness
88
from tests.functional.parser.utils import load_event
99

1010

11-
@parser(schema=MyDynamoBusiness, envelope=envelopes.DynamoDBEnvelope)
11+
@event_parser(schema=MyDynamoBusiness, envelope=envelopes.DynamoDBEnvelope)
1212
def handle_dynamodb(event: List[Dict[str, MyDynamoBusiness]], _: LambdaContext):
1313
assert len(event) == 2
1414
assert event[0]["OldImage"] is None
@@ -20,7 +20,7 @@ def handle_dynamodb(event: List[Dict[str, MyDynamoBusiness]], _: LambdaContext):
2020
assert event[1]["NewImage"].Id["N"] == 101
2121

2222

23-
@parser(schema=MyAdvancedDynamoBusiness)
23+
@event_parser(schema=MyAdvancedDynamoBusiness)
2424
def handle_dynamodb_no_envelope(event: MyAdvancedDynamoBusiness, _: LambdaContext):
2525
records = event.Records
2626
record = records[0]

tests/functional/parser/test_eventbridge.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
import pytest
44

5-
from aws_lambda_powertools.utilities.parser import envelopes, exceptions, parser
5+
from aws_lambda_powertools.utilities.parser import envelopes, event_parser, exceptions
66
from aws_lambda_powertools.utilities.typing import LambdaContext
77
from tests.functional.parser.schemas import MyAdvancedEventbridgeBusiness, MyEventbridgeBusiness
88
from tests.functional.parser.utils import load_event
99

1010

11-
@parser(schema=MyEventbridgeBusiness, envelope=envelopes.EventBridgeEnvelope)
11+
@event_parser(schema=MyEventbridgeBusiness, envelope=envelopes.EventBridgeEnvelope)
1212
def handle_eventbridge(event: MyEventbridgeBusiness, _: LambdaContext):
1313
assert event.instance_id == "i-1234567890abcdef0"
1414
assert event.state == "terminated"
1515

1616

17-
@parser(schema=MyAdvancedEventbridgeBusiness)
17+
@event_parser(schema=MyAdvancedEventbridgeBusiness)
1818
def handle_eventbridge_no_envelope(event: MyAdvancedEventbridgeBusiness, _: LambdaContext):
1919
assert event.detail.instance_id == "i-1234567890abcdef0"
2020
assert event.detail.state == "terminated"

tests/functional/parser/test_parser.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import pytest
44

5-
from aws_lambda_powertools.utilities.parser import exceptions, parser
5+
from aws_lambda_powertools.utilities.parser import event_parser, exceptions
66
from aws_lambda_powertools.utilities.typing import LambdaContext
77

88

99
@pytest.mark.parametrize("invalid_value", [None, bool(), [], (), object])
1010
def test_parser_unsupported_event(dummy_schema, invalid_value):
11-
@parser(schema=dummy_schema)
11+
@event_parser(schema=dummy_schema)
1212
def handle_no_envelope(event: Dict, _: LambdaContext):
1313
return event
1414

@@ -20,7 +20,7 @@ def handle_no_envelope(event: Dict, _: LambdaContext):
2020
"invalid_envelope,expected", [(True, ""), (["dummy"], ""), (object, exceptions.InvalidEnvelopeError)]
2121
)
2222
def test_parser_invalid_envelope_type(dummy_event, dummy_schema, invalid_envelope, expected):
23-
@parser(schema=dummy_schema, envelope=invalid_envelope)
23+
@event_parser(schema=dummy_schema, envelope=invalid_envelope)
2424
def handle_no_envelope(event: Dict, _: LambdaContext):
2525
return event
2626

@@ -32,15 +32,15 @@ def handle_no_envelope(event: Dict, _: LambdaContext):
3232

3333

3434
def test_parser_schema_with_envelope(dummy_event, dummy_schema, dummy_envelope):
35-
@parser(schema=dummy_schema, envelope=dummy_envelope)
35+
@event_parser(schema=dummy_schema, envelope=dummy_envelope)
3636
def handle_no_envelope(event: Dict, _: LambdaContext):
3737
return event
3838

3939
handle_no_envelope(dummy_event, LambdaContext())
4040

4141

4242
def test_parser_schema_no_envelope(dummy_event, dummy_schema):
43-
@parser(schema=dummy_schema)
43+
@event_parser(schema=dummy_schema)
4444
def handle_no_envelope(event: Dict, _: LambdaContext):
4545
return event
4646

@@ -49,7 +49,7 @@ def handle_no_envelope(event: Dict, _: LambdaContext):
4949

5050
@pytest.mark.parametrize("invalid_schema", [None, str, bool(), [], (), object])
5151
def test_parser_with_invalid_schema_type(dummy_event, invalid_schema):
52-
@parser(schema=invalid_schema)
52+
@event_parser(schema=invalid_schema)
5353
def handle_no_envelope(event: Dict, _: LambdaContext):
5454
return event
5555

tests/functional/parser/test_sqs.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import pytest
44

5-
from aws_lambda_powertools.utilities.parser import envelopes, exceptions, parser
5+
from aws_lambda_powertools.utilities.parser import envelopes, event_parser, exceptions
66
from aws_lambda_powertools.utilities.typing import LambdaContext
77
from tests.functional.parser.schemas import MyAdvancedSqsBusiness, MySqsBusiness
88
from tests.functional.parser.utils import load_event
99
from tests.functional.validator.conftest import sqs_event # noqa: F401
1010

1111

12-
@parser(schema=MySqsBusiness, envelope=envelopes.SqsEnvelope)
12+
@event_parser(schema=MySqsBusiness, envelope=envelopes.SqsEnvelope)
1313
def handle_sqs_json_body(event: List[MySqsBusiness], _: LambdaContext):
1414
assert len(event) == 1
1515
assert event[0].message == "hello world"
@@ -55,7 +55,7 @@ def test_validate_event_does_not_conform_user_json_string_with_schema():
5555
handle_sqs_json_body(event, LambdaContext())
5656

5757

58-
@parser(schema=MyAdvancedSqsBusiness)
58+
@event_parser(schema=MyAdvancedSqsBusiness)
5959
def handle_sqs_no_envelope(event: MyAdvancedSqsBusiness, _: LambdaContext):
6060
records = event.Records
6161
record = records[0]

0 commit comments

Comments
 (0)