Skip to content

Commit 8930915

Browse files
authored
chore(shared): fix cyclic import & refactor data extraction fn (#613)
1 parent 0258400 commit 8930915

File tree

7 files changed

+20
-11
lines changed

7 files changed

+20
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""Shared exceptions that don't belong to a single utility"""
2+
3+
4+
class InvalidEnvelopeExpressionError(Exception):
5+
"""When JMESPath fails to parse expression"""

aws_lambda_powertools/shared/jmespath_utils.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import base64
22
import gzip
33
import json
4+
import logging
45
from typing import Any, Dict, Optional, Union
56

67
import jmespath
78
from jmespath.exceptions import LexerError
89

9-
from aws_lambda_powertools.utilities.validation import InvalidEnvelopeExpressionError
10-
from aws_lambda_powertools.utilities.validation.base import logger
10+
from aws_lambda_powertools.exceptions import InvalidEnvelopeExpressionError
11+
12+
logger = logging.getLogger(__name__)
1113

1214

1315
class PowertoolsFunctions(jmespath.functions.Functions):
@@ -27,7 +29,7 @@ def _func_powertools_base64_gzip(self, value):
2729
return uncompressed.decode()
2830

2931

30-
def unwrap_event_from_envelope(data: Union[Dict, str], envelope: str, jmespath_options: Optional[Dict]) -> Any:
32+
def extract_data_from_envelope(data: Union[Dict, str], envelope: str, jmespath_options: Optional[Dict]) -> Any:
3133
"""Searches data using JMESPath expression
3234
3335
Parameters

aws_lambda_powertools/utilities/feature_flags/appconfig.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def get_configuration(self) -> Dict[str, Any]:
8080
)
8181

8282
if self.envelope:
83-
config = jmespath_utils.unwrap_event_from_envelope(
83+
config = jmespath_utils.extract_data_from_envelope(
8484
data=config, envelope=self.envelope, jmespath_options=self.jmespath_options
8585
)
8686

Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from ...exceptions import InvalidEnvelopeExpressionError
2+
3+
14
class SchemaValidationError(Exception):
25
"""When serialization fail schema validation"""
36

@@ -6,5 +9,4 @@ class InvalidSchemaFormatError(Exception):
69
"""When JSON Schema is in invalid format"""
710

811

9-
class InvalidEnvelopeExpressionError(Exception):
10-
"""When JMESPath fails to parse expression"""
12+
__all__ = ["SchemaValidationError", "InvalidSchemaFormatError", "InvalidEnvelopeExpressionError"]

aws_lambda_powertools/utilities/validation/validator.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def handler(event, context):
117117
When JMESPath expression to unwrap event is invalid
118118
"""
119119
if envelope:
120-
event = jmespath_utils.unwrap_event_from_envelope(
120+
event = jmespath_utils.extract_data_from_envelope(
121121
data=event, envelope=envelope, jmespath_options=jmespath_options
122122
)
123123

@@ -219,7 +219,7 @@ def handler(event, context):
219219
When JMESPath expression to unwrap event is invalid
220220
"""
221221
if envelope:
222-
event = jmespath_utils.unwrap_event_from_envelope(
222+
event = jmespath_utils.extract_data_from_envelope(
223223
data=event, envelope=envelope, jmespath_options=jmespath_options
224224
)
225225

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pydantic = ["pydantic", "email-validator"]
6060

6161
[tool.coverage.run]
6262
source = ["aws_lambda_powertools"]
63-
omit = ["tests/*"]
63+
omit = ["tests/*", "aws_lambda_powertools/exceptions/*"]
6464
branch = true
6565

6666
[tool.coverage.html]

tests/functional/idempotency/conftest.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from botocore.config import Config
1212
from jmespath import functions
1313

14-
from aws_lambda_powertools.shared.jmespath_utils import unwrap_event_from_envelope
14+
from aws_lambda_powertools.shared.jmespath_utils import extract_data_from_envelope
1515
from aws_lambda_powertools.shared.json_encoder import Encoder
1616
from aws_lambda_powertools.utilities.idempotency import DynamoDBPersistenceLayer
1717
from aws_lambda_powertools.utilities.idempotency.idempotency import IdempotencyConfig
@@ -149,7 +149,7 @@ def hashed_idempotency_key(lambda_apigw_event, default_jmespath, lambda_context)
149149

150150
@pytest.fixture
151151
def hashed_idempotency_key_with_envelope(lambda_apigw_event):
152-
event = unwrap_event_from_envelope(
152+
event = extract_data_from_envelope(
153153
data=lambda_apigw_event, envelope=envelopes.API_GATEWAY_HTTP, jmespath_options={}
154154
)
155155
return "test-func#" + hashlib.md5(json.dumps(event).encode()).hexdigest()

0 commit comments

Comments
 (0)