aws-lambda-powertools 3.6.1a3__py3-none-any.whl → 3.6.1a5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aws_lambda_powertools/event_handler/api_gateway.py +4 -5
- aws_lambda_powertools/event_handler/openapi/params.py +14 -0
- aws_lambda_powertools/logging/exceptions.py +8 -0
- aws_lambda_powertools/logging/logger.py +34 -6
- aws_lambda_powertools/shared/version.py +1 -1
- aws_lambda_powertools/utilities/batch/decorators.py +11 -0
- aws_lambda_powertools/utilities/batch/exceptions.py +6 -0
- aws_lambda_powertools/utilities/parser/models/iot_registry_events.py +129 -0
- {aws_lambda_powertools-3.6.1a3.dist-info → aws_lambda_powertools-3.6.1a5.dist-info}/METADATA +1 -1
- {aws_lambda_powertools-3.6.1a3.dist-info → aws_lambda_powertools-3.6.1a5.dist-info}/RECORD +12 -11
- {aws_lambda_powertools-3.6.1a3.dist-info → aws_lambda_powertools-3.6.1a5.dist-info}/LICENSE +0 -0
- {aws_lambda_powertools-3.6.1a3.dist-info → aws_lambda_powertools-3.6.1a5.dist-info}/WHEEL +0 -0
@@ -552,11 +552,7 @@ class Route:
|
|
552
552
|
operation_responses: dict[int, OpenAPIResponse] = {
|
553
553
|
422: {
|
554
554
|
"description": "Validation Error",
|
555
|
-
"content": {
|
556
|
-
"application/json": {
|
557
|
-
"schema": {"$ref": COMPONENT_REF_PREFIX + "HTTPValidationError"},
|
558
|
-
},
|
559
|
-
},
|
555
|
+
"content": {"application/json": {"schema": {"$ref": f"{COMPONENT_REF_PREFIX}HTTPValidationError"}}},
|
560
556
|
},
|
561
557
|
}
|
562
558
|
|
@@ -761,6 +757,9 @@ class Route:
|
|
761
757
|
if field_info.description:
|
762
758
|
parameter["description"] = field_info.description
|
763
759
|
|
760
|
+
if field_info.openapi_examples:
|
761
|
+
parameter["examples"] = field_info.openapi_examples
|
762
|
+
|
764
763
|
if field_info.deprecated:
|
765
764
|
parameter["deprecated"] = field_info.deprecated
|
766
765
|
|
@@ -20,6 +20,7 @@ from aws_lambda_powertools.event_handler.openapi.compat import (
|
|
20
20
|
)
|
21
21
|
|
22
22
|
if TYPE_CHECKING:
|
23
|
+
from aws_lambda_powertools.event_handler.openapi.models import Example
|
23
24
|
from aws_lambda_powertools.event_handler.openapi.types import CacheKey
|
24
25
|
|
25
26
|
"""
|
@@ -117,6 +118,7 @@ class Param(FieldInfo):
|
|
117
118
|
max_digits: int | None = _Unset,
|
118
119
|
decimal_places: int | None = _Unset,
|
119
120
|
examples: list[Any] | None = None,
|
121
|
+
openapi_examples: dict[str, Example] | None = None,
|
120
122
|
deprecated: bool | None = None,
|
121
123
|
include_in_schema: bool = True,
|
122
124
|
json_schema_extra: dict[str, Any] | None = None,
|
@@ -205,8 +207,13 @@ class Param(FieldInfo):
|
|
205
207
|
if examples is not None:
|
206
208
|
kwargs["examples"] = examples
|
207
209
|
|
210
|
+
if openapi_examples is not None:
|
211
|
+
kwargs["openapi_examples"] = openapi_examples
|
212
|
+
|
208
213
|
current_json_schema_extra = json_schema_extra or extra
|
209
214
|
|
215
|
+
self.openapi_examples = openapi_examples
|
216
|
+
|
210
217
|
kwargs.update(
|
211
218
|
{
|
212
219
|
"annotation": annotation,
|
@@ -262,6 +269,7 @@ class Path(Param):
|
|
262
269
|
max_digits: int | None = _Unset,
|
263
270
|
decimal_places: int | None = _Unset,
|
264
271
|
examples: list[Any] | None = None,
|
272
|
+
openapi_examples: dict[str, Example] | None = None,
|
265
273
|
deprecated: bool | None = None,
|
266
274
|
include_in_schema: bool = True,
|
267
275
|
json_schema_extra: dict[str, Any] | None = None,
|
@@ -353,6 +361,7 @@ class Path(Param):
|
|
353
361
|
decimal_places=decimal_places,
|
354
362
|
deprecated=deprecated,
|
355
363
|
examples=examples,
|
364
|
+
openapi_examples=openapi_examples,
|
356
365
|
include_in_schema=include_in_schema,
|
357
366
|
json_schema_extra=json_schema_extra,
|
358
367
|
**extra,
|
@@ -392,6 +401,7 @@ class Query(Param):
|
|
392
401
|
max_digits: int | None = _Unset,
|
393
402
|
decimal_places: int | None = _Unset,
|
394
403
|
examples: list[Any] | None = None,
|
404
|
+
openapi_examples: dict[str, Example] | None = None,
|
395
405
|
deprecated: bool | None = None,
|
396
406
|
include_in_schema: bool = True,
|
397
407
|
json_schema_extra: dict[str, Any] | None = None,
|
@@ -480,6 +490,7 @@ class Query(Param):
|
|
480
490
|
decimal_places=decimal_places,
|
481
491
|
deprecated=deprecated,
|
482
492
|
examples=examples,
|
493
|
+
openapi_examples=openapi_examples,
|
483
494
|
include_in_schema=include_in_schema,
|
484
495
|
json_schema_extra=json_schema_extra,
|
485
496
|
**extra,
|
@@ -522,6 +533,7 @@ class Header(Param):
|
|
522
533
|
max_digits: int | None = _Unset,
|
523
534
|
decimal_places: int | None = _Unset,
|
524
535
|
examples: list[Any] | None = None,
|
536
|
+
openapi_examples: dict[str, Example] | None = None,
|
525
537
|
deprecated: bool | None = None,
|
526
538
|
include_in_schema: bool = True,
|
527
539
|
json_schema_extra: dict[str, Any] | None = None,
|
@@ -616,6 +628,7 @@ class Header(Param):
|
|
616
628
|
decimal_places=decimal_places,
|
617
629
|
deprecated=deprecated,
|
618
630
|
examples=examples,
|
631
|
+
openapi_examples=openapi_examples,
|
619
632
|
include_in_schema=include_in_schema,
|
620
633
|
json_schema_extra=json_schema_extra,
|
621
634
|
**extra,
|
@@ -669,6 +682,7 @@ class Body(FieldInfo):
|
|
669
682
|
max_digits: int | None = _Unset,
|
670
683
|
decimal_places: int | None = _Unset,
|
671
684
|
examples: list[Any] | None = None,
|
685
|
+
openapi_examples: dict[str, Example] | None = None,
|
672
686
|
deprecated: bool | None = None,
|
673
687
|
include_in_schema: bool = True,
|
674
688
|
json_schema_extra: dict[str, Any] | None = None,
|
@@ -14,12 +14,14 @@ import random
|
|
14
14
|
import sys
|
15
15
|
import warnings
|
16
16
|
from contextlib import contextmanager
|
17
|
-
from typing import IO, TYPE_CHECKING, Any, Callable, Generator, Iterable, Mapping, TypeVar, overload
|
17
|
+
from typing import IO, TYPE_CHECKING, Any, Callable, Generator, Iterable, Mapping, TypeVar, cast, overload
|
18
18
|
|
19
19
|
from aws_lambda_powertools.logging.constants import (
|
20
|
+
LOGGER_ATTRIBUTE_HANDLER,
|
21
|
+
LOGGER_ATTRIBUTE_POWERTOOLS_HANDLER,
|
20
22
|
LOGGER_ATTRIBUTE_PRECONFIGURED,
|
21
23
|
)
|
22
|
-
from aws_lambda_powertools.logging.exceptions import InvalidLoggerSamplingRateError
|
24
|
+
from aws_lambda_powertools.logging.exceptions import InvalidLoggerSamplingRateError, OrphanedChildLoggerError
|
23
25
|
from aws_lambda_powertools.logging.filters import SuppressFilter
|
24
26
|
from aws_lambda_powertools.logging.formatter import (
|
25
27
|
RESERVED_FORMATTER_CUSTOM_KEYS,
|
@@ -230,13 +232,14 @@ class Logger:
|
|
230
232
|
self.child = child
|
231
233
|
self.logger_formatter = logger_formatter
|
232
234
|
self._stream = stream or sys.stdout
|
233
|
-
|
235
|
+
|
234
236
|
self.log_uncaught_exceptions = log_uncaught_exceptions
|
235
237
|
|
236
238
|
self._is_deduplication_disabled = resolve_truthy_env_var_choice(
|
237
239
|
env=os.getenv(constants.LOGGER_LOG_DEDUPLICATION_ENV, "false"),
|
238
240
|
)
|
239
241
|
self._logger = self._get_logger()
|
242
|
+
self.logger_handler = logger_handler or self._get_handler()
|
240
243
|
|
241
244
|
# NOTE: This is primarily to improve UX, so IDEs can autocomplete LambdaPowertoolsFormatter options
|
242
245
|
# previously, we masked all of them as kwargs thus limiting feature discovery
|
@@ -275,6 +278,23 @@ class Logger:
|
|
275
278
|
|
276
279
|
return logging.getLogger(logger_name)
|
277
280
|
|
281
|
+
def _get_handler(self) -> logging.Handler:
|
282
|
+
# is a logger handler already configured?
|
283
|
+
if getattr(self, LOGGER_ATTRIBUTE_HANDLER, None):
|
284
|
+
return self.logger_handler
|
285
|
+
|
286
|
+
# Detect Powertools logger by checking for unique handler
|
287
|
+
# Retrieve the first handler if it's a Powertools instance
|
288
|
+
if getattr(self._logger, "powertools_handler", None):
|
289
|
+
return self._logger.handlers[0]
|
290
|
+
|
291
|
+
# for children, use parent's handler
|
292
|
+
if self.child:
|
293
|
+
return getattr(self._logger.parent, LOGGER_ATTRIBUTE_POWERTOOLS_HANDLER, None) # type: ignore[return-value] # always checked in formatting
|
294
|
+
|
295
|
+
# otherwise, create a new stream handler (first time init)
|
296
|
+
return logging.StreamHandler(self._stream)
|
297
|
+
|
278
298
|
def _init_logger(
|
279
299
|
self,
|
280
300
|
formatter_options: dict | None = None,
|
@@ -317,6 +337,7 @@ class Logger:
|
|
317
337
|
# std logging will return the same Logger with our attribute if name is reused
|
318
338
|
logger.debug(f"Marking logger {self.service} as preconfigured")
|
319
339
|
self._logger.init = True # type: ignore[attr-defined]
|
340
|
+
self._logger.powertools_handler = self.logger_handler # type: ignore[attr-defined]
|
320
341
|
|
321
342
|
def _configure_sampling(self) -> None:
|
322
343
|
"""Dynamically set log level based on sampling rate
|
@@ -723,13 +744,20 @@ class Logger:
|
|
723
744
|
"""Convenience property to access the first logger handler"""
|
724
745
|
# We ignore mypy here because self.child encodes whether or not self._logger.parent is
|
725
746
|
# None, mypy can't see this from context but we can
|
726
|
-
|
727
|
-
return handlers[0]
|
747
|
+
return self._get_handler()
|
728
748
|
|
729
749
|
@property
|
730
750
|
def registered_formatter(self) -> BasePowertoolsFormatter:
|
731
751
|
"""Convenience property to access the first logger formatter"""
|
732
|
-
|
752
|
+
handler = self.registered_handler
|
753
|
+
if handler is None:
|
754
|
+
raise OrphanedChildLoggerError(
|
755
|
+
"Orphan child loggers cannot append nor remove keys until a parent is initialized first. "
|
756
|
+
"To solve this issue, you can A) make sure a parent logger is initialized first, or B) move append/remove keys operations to a later stage." # noqa: E501
|
757
|
+
"Reference: https://docs.powertools.aws.dev/lambda/python/latest/core/logger/#reusing-logger-across-your-code",
|
758
|
+
)
|
759
|
+
|
760
|
+
return cast(BasePowertoolsFormatter, handler.formatter)
|
733
761
|
|
734
762
|
@property
|
735
763
|
def log_level(self) -> int:
|
@@ -12,6 +12,7 @@ from aws_lambda_powertools.utilities.batch import (
|
|
12
12
|
BatchProcessor,
|
13
13
|
EventType,
|
14
14
|
)
|
15
|
+
from aws_lambda_powertools.utilities.batch.exceptions import UnexpectedBatchTypeError
|
15
16
|
from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
|
16
17
|
|
17
18
|
if TYPE_CHECKING:
|
@@ -204,6 +205,11 @@ def process_partial_response(
|
|
204
205
|
"""
|
205
206
|
try:
|
206
207
|
records: list[dict] = event.get("Records", [])
|
208
|
+
if not records or not isinstance(records, list):
|
209
|
+
raise UnexpectedBatchTypeError(
|
210
|
+
"Unexpected batch event type. Possible values are: SQS, KinesisDataStreams, DynamoDBStreams",
|
211
|
+
)
|
212
|
+
|
207
213
|
except AttributeError:
|
208
214
|
event_types = ", ".join(list(EventType.__members__))
|
209
215
|
docs = "https://docs.powertools.aws.dev/lambda/python/latest/utilities/batch/#processing-messages-from-sqs" # noqa: E501 # long-line
|
@@ -268,6 +274,11 @@ def async_process_partial_response(
|
|
268
274
|
"""
|
269
275
|
try:
|
270
276
|
records: list[dict] = event.get("Records", [])
|
277
|
+
if not records or not isinstance(records, list):
|
278
|
+
raise UnexpectedBatchTypeError(
|
279
|
+
"Unexpected batch event type. Possible values are: SQS, KinesisDataStreams, DynamoDBStreams",
|
280
|
+
)
|
281
|
+
|
271
282
|
except AttributeError:
|
272
283
|
event_types = ", ".join(list(EventType.__members__))
|
273
284
|
docs = "https://docs.powertools.aws.dev/lambda/python/latest/utilities/batch/#processing-messages-from-sqs" # noqa: E501 # long-line
|
@@ -38,6 +38,12 @@ class BatchProcessingError(BaseBatchProcessingError):
|
|
38
38
|
return self.format_exceptions(parent_exception_str)
|
39
39
|
|
40
40
|
|
41
|
+
class UnexpectedBatchTypeError(BatchProcessingError):
|
42
|
+
"""Error thrown by the Batch Processing utility when a partial processor receives an unexpected batch type"""
|
43
|
+
|
44
|
+
pass
|
45
|
+
|
46
|
+
|
41
47
|
class SQSFifoCircuitBreakerError(Exception):
|
42
48
|
"""
|
43
49
|
Signals a record not processed due to the SQS FIFO processing being interrupted
|
@@ -0,0 +1,129 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import Any, Dict, List, Literal, Optional
|
3
|
+
|
4
|
+
from pydantic import BaseModel, Field
|
5
|
+
|
6
|
+
EVENT_CRUD_OPERATION = Literal["CREATED", "UPDATED", "DELETED"]
|
7
|
+
EVENT_ADD_REMOVE_OPERATION = Literal["ADDED", "REMOVED"]
|
8
|
+
|
9
|
+
|
10
|
+
class IoTCoreRegistryEventsBase(BaseModel):
|
11
|
+
event_id: str = Field(..., alias="eventId")
|
12
|
+
timestamp: datetime
|
13
|
+
|
14
|
+
|
15
|
+
class IoTCoreThingEvent(IoTCoreRegistryEventsBase):
|
16
|
+
"""
|
17
|
+
Thing Created/Updated/Deleted
|
18
|
+
|
19
|
+
The registry publishes event messages when things are created, updated, or deleted.
|
20
|
+
"""
|
21
|
+
|
22
|
+
event_type: Literal["THING_EVENT"] = Field(..., alias="eventType")
|
23
|
+
operation: EVENT_CRUD_OPERATION
|
24
|
+
thing_id: str = Field(..., alias="thingId")
|
25
|
+
account_id: str = Field(..., alias="accountId")
|
26
|
+
thing_name: str = Field(..., alias="thingName")
|
27
|
+
version_number: int = Field(..., alias="versionNumber")
|
28
|
+
thing_type_name: Optional[str] = Field(None, alias="thingTypeName")
|
29
|
+
attributes: Dict[str, Any]
|
30
|
+
|
31
|
+
|
32
|
+
class IoTCoreThingTypeEvent(IoTCoreRegistryEventsBase):
|
33
|
+
"""
|
34
|
+
Thing Type Created/Updated/Deprecated/Undeprecated/Deleted
|
35
|
+
The registry publishes event messages when thing types are created, updated, deprecated, undeprecated, or deleted.
|
36
|
+
|
37
|
+
Format:
|
38
|
+
$aws/events/thingType/thingTypeName/created
|
39
|
+
$aws/events/thingType/thingTypeName/updated
|
40
|
+
$aws/events/thingType/thingTypeName/deleted
|
41
|
+
"""
|
42
|
+
|
43
|
+
event_type: Literal["THING_TYPE_EVENT"] = Field(..., alias="eventType")
|
44
|
+
operation: EVENT_CRUD_OPERATION
|
45
|
+
account_id: str = Field(..., alias="accountId")
|
46
|
+
thing_type_id: str = Field(..., alias="thingTypeId")
|
47
|
+
thing_type_name: str = Field(..., alias="thingTypeName")
|
48
|
+
is_deprecated: bool = Field(..., alias="isDeprecated")
|
49
|
+
deprecation_date: Optional[datetime] = Field(None, alias="deprecationDate")
|
50
|
+
searchable_attributes: List[str] = Field(..., alias="searchableAttributes")
|
51
|
+
propagating_attributes: List[Dict[str, str]] = Field(..., alias="propagatingAttributes")
|
52
|
+
description: str
|
53
|
+
|
54
|
+
|
55
|
+
class IoTCoreThingTypeAssociationEvent(IoTCoreRegistryEventsBase):
|
56
|
+
"""
|
57
|
+
The registry publishes event messages when a thing type is associated or disassociated with a thing.
|
58
|
+
|
59
|
+
Format:
|
60
|
+
$aws/events/thingTypeAssociation/thing/thingName/thingType/typeName/added
|
61
|
+
$aws/events/thingTypeAssociation/thing/thingName/thingType/typeName/removed
|
62
|
+
"""
|
63
|
+
|
64
|
+
event_type: Literal["THING_TYPE_ASSOCIATION_EVENT"] = Field(..., alias="eventType")
|
65
|
+
operation: EVENT_ADD_REMOVE_OPERATION
|
66
|
+
thing_id: str = Field(..., alias="thingId")
|
67
|
+
thing_name: str = Field(..., alias="thingName")
|
68
|
+
thing_type_name: str = Field(..., alias="thingTypeName")
|
69
|
+
|
70
|
+
|
71
|
+
class IoTCoreThingGroupEvent(IoTCoreRegistryEventsBase):
|
72
|
+
"""
|
73
|
+
The registry publishes the following event messages when a thing group is created, updated, or deleted.
|
74
|
+
|
75
|
+
Format:
|
76
|
+
$aws/events/thingGroup/groupName/created
|
77
|
+
$aws/events/thingGroup/groupName/updated
|
78
|
+
$aws/events/thingGroup/groupName/deleted
|
79
|
+
"""
|
80
|
+
|
81
|
+
event_type: Literal["THING_GROUP_EVENT"] = Field(..., alias="eventType")
|
82
|
+
operation: EVENT_CRUD_OPERATION
|
83
|
+
account_id: str = Field(..., alias="accountId")
|
84
|
+
thing_group_id: str = Field(..., alias="thingGroupId")
|
85
|
+
thing_group_name: str = Field(..., alias="thingGroupName")
|
86
|
+
version_number: int = Field(..., alias="versionNumber")
|
87
|
+
parent_group_name: Optional[str] = Field(None, alias="parentGroupName")
|
88
|
+
parent_group_id: Optional[str] = Field(None, alias="parentGroupId")
|
89
|
+
description: str
|
90
|
+
root_to_parent_thing_groups: List[Dict[str, str]] = Field(..., alias="rootToParentThingGroups")
|
91
|
+
attributes: Dict[str, Any]
|
92
|
+
dynamic_group_mapping_id: Optional[str] = Field(None, alias="dynamicGroupMappingId")
|
93
|
+
|
94
|
+
|
95
|
+
class IoTCoreAddOrRemoveFromThingGroupEvent(IoTCoreRegistryEventsBase):
|
96
|
+
"""
|
97
|
+
The registry publishes event messages when a thing is added to or removed from a thing group.
|
98
|
+
|
99
|
+
Format:
|
100
|
+
$aws/events/thingGroupMembership/thingGroup/thingGroupName/thing/thingName/added
|
101
|
+
$aws/events/thingGroupMembership/thingGroup/thingGroupName/thing/thingName/removed
|
102
|
+
"""
|
103
|
+
|
104
|
+
event_type: Literal["THING_GROUP_MEMBERSHIP_EVENT"] = Field(..., alias="eventType")
|
105
|
+
operation: EVENT_ADD_REMOVE_OPERATION
|
106
|
+
account_id: str = Field(..., alias="accountId")
|
107
|
+
group_arn: str = Field(..., alias="groupArn")
|
108
|
+
group_id: str = Field(..., alias="groupId")
|
109
|
+
thing_arn: str = Field(..., alias="thingArn")
|
110
|
+
thing_id: str = Field(..., alias="thingId")
|
111
|
+
membership_id: str = Field(..., alias="membershipId")
|
112
|
+
|
113
|
+
|
114
|
+
class IoTCoreAddOrDeleteFromThingGroupEvent(IoTCoreRegistryEventsBase):
|
115
|
+
"""
|
116
|
+
The registry publishes event messages when a thing group is added to or removed from another thing group.
|
117
|
+
|
118
|
+
Format:
|
119
|
+
$aws/events/thingGroupHierarchy/thingGroup/parentThingGroupName/childThingGroup/childThingGroupName/added
|
120
|
+
$aws/events/thingGroupHierarchy/thingGroup/parentThingGroupName/childThingGroup/childThingGroupName/removed
|
121
|
+
"""
|
122
|
+
|
123
|
+
event_type: Literal["THING_GROUP_HIERARCHY_EVENT"] = Field(..., alias="eventType")
|
124
|
+
operation: EVENT_ADD_REMOVE_OPERATION
|
125
|
+
account_id: str = Field(..., alias="accountId")
|
126
|
+
thing_group_id: str = Field(..., alias="thingGroupId")
|
127
|
+
thing_group_name: str = Field(..., alias="thingGroupName")
|
128
|
+
child_group_id: str = Field(..., alias="childGroupId")
|
129
|
+
child_group_name: str = Field(..., alias="childGroupName")
|
{aws_lambda_powertools-3.6.1a3.dist-info → aws_lambda_powertools-3.6.1a5.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aws_lambda_powertools
|
3
|
-
Version: 3.6.
|
3
|
+
Version: 3.6.1a5
|
4
4
|
Summary: Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
5
5
|
License: MIT
|
6
6
|
Keywords: aws_lambda_powertools,aws,tracing,logging,lambda,powertools,feature_flags,idempotency,middleware
|
@@ -1,6 +1,6 @@
|
|
1
1
|
aws_lambda_powertools/__init__.py,sha256=o4iEHU0MfWC0_TfVmisxi0VOAUw5uQfqLQWr0t29ZaE,676
|
2
2
|
aws_lambda_powertools/event_handler/__init__.py,sha256=RM4TF62aonr60nVlq4V8ogfjef8RtpUUGuDUfZY34_w,901
|
3
|
-
aws_lambda_powertools/event_handler/api_gateway.py,sha256
|
3
|
+
aws_lambda_powertools/event_handler/api_gateway.py,sha256=-WRBR2GfHcZbe1_aU8jN0HLT07hJp8Ba-BS3MLqZrjI,106767
|
4
4
|
aws_lambda_powertools/event_handler/appsync.py,sha256=mnuSkA9NhszX9naIvCveI5ivnJO5vbY7FPBIVWvg3S8,19209
|
5
5
|
aws_lambda_powertools/event_handler/bedrock_agent.py,sha256=dCaPxim_RLsO-IVnRoe2hqAq8FPvIyfCiCHk5NKIQBo,13773
|
6
6
|
aws_lambda_powertools/event_handler/content_types.py,sha256=0MKsKNu-SSrxbULVKnUjwgK-lVXhVD7BBjZ4Js0kEsI,163
|
@@ -22,7 +22,7 @@ aws_lambda_powertools/event_handler/openapi/dependant.py,sha256=KaLyOpDpZUhQPfAX
|
|
22
22
|
aws_lambda_powertools/event_handler/openapi/encoders.py,sha256=ItcAMMdNKDmOPXFvFQGiwxMOD1o-XX815d864mVGrMY,11695
|
23
23
|
aws_lambda_powertools/event_handler/openapi/exceptions.py,sha256=4iubuXydACTddytd3NMfqlwlS9aOXMSaROU7ev2Ojes,777
|
24
24
|
aws_lambda_powertools/event_handler/openapi/models.py,sha256=pDkWqvbzF3dw1VQkCPbqylp5MFWJKdXj0pOyxI8f4WA,17101
|
25
|
-
aws_lambda_powertools/event_handler/openapi/params.py,sha256=
|
25
|
+
aws_lambda_powertools/event_handler/openapi/params.py,sha256=Eq4msH-BOUT8BHpjNyZBnU5llG1shTNS1IBCntbbsS8,42518
|
26
26
|
aws_lambda_powertools/event_handler/openapi/pydantic_loader.py,sha256=Bud_yzI_Cao7UN_9zx6NeP0H2rQOZJbdbDAjgtthB-g,217
|
27
27
|
aws_lambda_powertools/event_handler/openapi/swagger_ui/__init__.py,sha256=52wY3inOe1EPunrNl5cUqVQWHM6FsJHU5wpObSAX7-M,335
|
28
28
|
aws_lambda_powertools/event_handler/openapi/swagger_ui/html.py,sha256=83f5h3j1E-4Q5OcRpq9ulgR_w0hL5CIanYFMEaOU59E,2769
|
@@ -38,13 +38,13 @@ aws_lambda_powertools/exceptions/__init__.py,sha256=bv7fiO8Cj5xbHOTlDpWpM3pIkbdS
|
|
38
38
|
aws_lambda_powertools/logging/__init__.py,sha256=G5MTkVqaQvpfa7k3fGkj4QN0KU6nFfP0_SLF_47G_VE,72
|
39
39
|
aws_lambda_powertools/logging/constants.py,sha256=P0XgbCmG4NiP96kx0qxe6QUC3ShN12doSIXTkobX7C4,309
|
40
40
|
aws_lambda_powertools/logging/correlation_paths.py,sha256=uHHrl03aWzpOsrGHZ-9E6PNoMFyKjv3APNMMkI1EN_c,411
|
41
|
-
aws_lambda_powertools/logging/exceptions.py,sha256=
|
41
|
+
aws_lambda_powertools/logging/exceptions.py,sha256=Fe_jk8O9vgUSUHxxOkz6Ev521aXsgPkMgA9Hb1nBn6g,232
|
42
42
|
aws_lambda_powertools/logging/filters.py,sha256=icet1o3-QSSvrmj2udL4ZYT0msf5b3rXj5l7p6dAxAs,523
|
43
43
|
aws_lambda_powertools/logging/formatter.py,sha256=dmE6XXmkWVkYbWdy1Kg69TYJJ0yDXfbK7LY6lLex_Mc,18618
|
44
44
|
aws_lambda_powertools/logging/formatters/__init__.py,sha256=OqddpJcWMqRYhx5SFy-SPqtt72tkRZbfpEi_oCC47eI,301
|
45
45
|
aws_lambda_powertools/logging/formatters/datadog.py,sha256=NwaaBOp7jIlOAH158NzyvW-EwmWqqnYX9f7Uu_nIUYQ,3169
|
46
46
|
aws_lambda_powertools/logging/lambda_context.py,sha256=VHst_6hxMpXgScoxNwaC61UXPTIdd3AEBHTPzb4esPc,1736
|
47
|
-
aws_lambda_powertools/logging/logger.py,sha256=
|
47
|
+
aws_lambda_powertools/logging/logger.py,sha256=Mj_XRyetPLbFd_OqlP_GkvkI93cPIIW4F0MRgxi1wQs,34924
|
48
48
|
aws_lambda_powertools/logging/types.py,sha256=Zc95nGdZ2sJUEPdwR0uoArT_F-JSKfpS_LokdCVO0nQ,1263
|
49
49
|
aws_lambda_powertools/logging/utils.py,sha256=NirAObjkkarN5fX2diHs0Ln_8KHLueviL-jCKhckIBM,4069
|
50
50
|
aws_lambda_powertools/metrics/__init__.py,sha256=B5FpJS_VR7zivm2ylvUF8RHBthKz4aDk0VA5GpDn3Tk,592
|
@@ -83,7 +83,7 @@ aws_lambda_powertools/shared/json_encoder.py,sha256=JQeWNu-4M7_xI_hqYExrxsb3OcEH
|
|
83
83
|
aws_lambda_powertools/shared/lazy_import.py,sha256=TbXQm2bcwXdZrYdBaJJXIswyLlumM85RJ_A_0w-h-GU,2019
|
84
84
|
aws_lambda_powertools/shared/types.py,sha256=APkI38HbiTpSF19NSNii8Ydx73vmVUVotgEQ9jHruEI,124
|
85
85
|
aws_lambda_powertools/shared/user_agent.py,sha256=DrCMFQuT4a4iIrpcWpAIjY37EFqR9-QxlxDGD-Nn9Gg,7081
|
86
|
-
aws_lambda_powertools/shared/version.py,sha256=
|
86
|
+
aws_lambda_powertools/shared/version.py,sha256=qVxl5QlmjbeeWQu-aenma036n5op-4afHiXDp3mkr9Q,84
|
87
87
|
aws_lambda_powertools/tracing/__init__.py,sha256=f4bMThOPBPWTPVcYqcAIErAJPerMsf3H_Z4gCXCsK9I,141
|
88
88
|
aws_lambda_powertools/tracing/base.py,sha256=DbLD8OSK05KLdSV36oNA5wDSGv8KbcOD19qMUqoXh58,4513
|
89
89
|
aws_lambda_powertools/tracing/extensions.py,sha256=APOfXOq-hRBKaK5WyfIyrd_6M1_9SWJZ3zxLA9jDZzU,492
|
@@ -91,8 +91,8 @@ aws_lambda_powertools/tracing/tracer.py,sha256=Nnf6-u6_x1Ty-CTgWp3NIGyL70QC7HQvB
|
|
91
91
|
aws_lambda_powertools/utilities/__init__.py,sha256=BhnoYxIaDboi8oCsEMAizR2Bp-EaJJ-OcdMa9q07thc,39
|
92
92
|
aws_lambda_powertools/utilities/batch/__init__.py,sha256=mjFmfhJwot_3miZrstDcMKH7LzM_0aD35z-581HgZfY,1073
|
93
93
|
aws_lambda_powertools/utilities/batch/base.py,sha256=FAYRjITKFHtRLmADX1xF92WQUPLyqzYXgvLvFtQE4vU,25292
|
94
|
-
aws_lambda_powertools/utilities/batch/decorators.py,sha256=
|
95
|
-
aws_lambda_powertools/utilities/batch/exceptions.py,sha256=
|
94
|
+
aws_lambda_powertools/utilities/batch/decorators.py,sha256=gYNV0Dcacz5bH9yWL7mTMoBm_Gc0-YoPstjy_fH2fwo,9365
|
95
|
+
aws_lambda_powertools/utilities/batch/exceptions.py,sha256=ZbWgItDimiSXmrDlejIpGc-4mez8XKgl3MB5bAPlrCo,1765
|
96
96
|
aws_lambda_powertools/utilities/batch/sqs_fifo_partial_processor.py,sha256=MPE87ZithqQOcwzoZdYReOajc4mrbiKOsIXcXicznZE,4236
|
97
97
|
aws_lambda_powertools/utilities/batch/types.py,sha256=XgUSbOIfzY4d2z3cFntQHAe6hcmxt6fbvSpa2KaMLeU,1112
|
98
98
|
aws_lambda_powertools/utilities/data_classes/__init__.py,sha256=vWlVwQ6DDlnl3BtSFaZpxM-QOZQ9B_FOmZ4c12zt40w,3247
|
@@ -209,6 +209,7 @@ aws_lambda_powertools/utilities/parser/models/cloudformation_custom_resource.py,
|
|
209
209
|
aws_lambda_powertools/utilities/parser/models/cloudwatch.py,sha256=1y2WmgBbIo6GkEtw75YzNaz9qREHl_-ThT0Iz7Ntd_k,1291
|
210
210
|
aws_lambda_powertools/utilities/parser/models/dynamodb.py,sha256=ktjvd5L7LLvitgi1yPFbtc_TK8J_3yzqIHmaZ4UfTt8,2197
|
211
211
|
aws_lambda_powertools/utilities/parser/models/event_bridge.py,sha256=KKv1z_NpLgcx86hvo--KwffqHiBuqxtzgPzduqCsAOA,570
|
212
|
+
aws_lambda_powertools/utilities/parser/models/iot_registry_events.py,sha256=hnuCxt9jYri_MRI9Z-n7aknA2CcBIHkPD__G9jSQEZ4,5448
|
212
213
|
aws_lambda_powertools/utilities/parser/models/kafka.py,sha256=XukgaGbhY0-yOGJ-36dwjJM2xvWk9z-XQd_rZGAheZs,1849
|
213
214
|
aws_lambda_powertools/utilities/parser/models/kinesis.py,sha256=-8zJh1GJd69QCo0tGQkg7SEqbcWJCbwmeSb1Rx8Jt40,1790
|
214
215
|
aws_lambda_powertools/utilities/parser/models/kinesis_firehose.py,sha256=K1MbkoX9yZjMcZOJ7H7nek3OgVoBAjtqorKlcoWRlQ8,939
|
@@ -249,7 +250,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
|
|
249
250
|
aws_lambda_powertools/utilities/validation/exceptions.py,sha256=PKy_19zQMBJGCMMFl-sMkcm-cc0v3zZBn_bhGE4wKNo,2084
|
250
251
|
aws_lambda_powertools/utilities/validation/validator.py,sha256=x_1qpuKJBuWpgNU-zCD3Di-vXrZfyUu7oA5RmjZjr84,10034
|
251
252
|
aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
|
252
|
-
aws_lambda_powertools-3.6.
|
253
|
-
aws_lambda_powertools-3.6.
|
254
|
-
aws_lambda_powertools-3.6.
|
255
|
-
aws_lambda_powertools-3.6.
|
253
|
+
aws_lambda_powertools-3.6.1a5.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
|
254
|
+
aws_lambda_powertools-3.6.1a5.dist-info/METADATA,sha256=ohnWonlUydk6o0XUM12hnfh0CfWvpfWkEGFUNv8A7i4,11150
|
255
|
+
aws_lambda_powertools-3.6.1a5.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
256
|
+
aws_lambda_powertools-3.6.1a5.dist-info/RECORD,,
|
File without changes
|
File without changes
|