aws-lambda-powertools 3.8.1a7__py3-none-any.whl → 3.8.1a9__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.
@@ -1127,6 +1127,12 @@ class Logger:
1127
1127
  tracer_id = get_tracer_id()
1128
1128
 
1129
1129
  if tracer_id and self._buffer_config:
1130
+ if not self._buffer_cache.get(tracer_id):
1131
+ # Detect new Lambda invocation context and reset buffer to maintain log isolation
1132
+ # Ensures logs from previous invocations do not leak into current execution
1133
+ # Prevent memory excessive usage
1134
+ self._buffer_cache.clear()
1135
+
1130
1136
  log_record: dict[str, Any] = _create_buffer_record(
1131
1137
  level=level,
1132
1138
  msg=msg,
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import os
4
4
  from datetime import datetime
5
+ from typing import TYPE_CHECKING
5
6
 
6
7
  from aws_lambda_powertools.metrics.provider.cloudwatch_emf.exceptions import (
7
8
  MetricResolutionError,
@@ -11,6 +12,9 @@ from aws_lambda_powertools.metrics.provider.cloudwatch_emf.metric_properties imp
11
12
  from aws_lambda_powertools.shared import constants
12
13
  from aws_lambda_powertools.shared.functions import strtobool
13
14
 
15
+ if TYPE_CHECKING:
16
+ from aws_lambda_powertools.utilities.typing.lambda_context import LambdaContext
17
+
14
18
 
15
19
  def extract_cloudwatch_metric_resolution_value(metric_resolutions: list, resolution: int | MetricResolution) -> int:
16
20
  """Return metric value from CloudWatch metric unit whether that's str or MetricResolution enum
@@ -161,3 +165,37 @@ def is_metrics_disabled() -> bool:
161
165
  ]
162
166
 
163
167
  return any(disable_conditions)
168
+
169
+
170
+ def resolve_cold_start_function_name(function_name: str | None, context: LambdaContext) -> str:
171
+ """
172
+ Resolve the function name for ColdStart metrics with a prioritized approach.
173
+
174
+ Parameters
175
+ ----------
176
+ function_name : str, optional
177
+ Explicitly provided function name (highest priority).
178
+ context : LambdaContext
179
+ AWS Lambda context object.
180
+
181
+ Returns
182
+ -------
183
+ str
184
+ Resolved function name.
185
+
186
+ Notes
187
+ -----
188
+ Function name resolution follows this priority:
189
+ 1. Explicitly provided function_name
190
+ 2. Environment variable POWERTOOLS_METRICS_FUNCTION_NAME
191
+ 3. Lambda context function name
192
+ """
193
+
194
+ if function_name:
195
+ return function_name
196
+
197
+ metrics_function_name_env = os.getenv(constants.METRICS_FUNCTION_NAME_ENV)
198
+ if metrics_function_name_env:
199
+ return metrics_function_name_env
200
+
201
+ return context.function_name
@@ -86,6 +86,7 @@ class Metrics:
86
86
  service: str | None = None,
87
87
  namespace: str | None = None,
88
88
  provider: AmazonCloudWatchEMFProvider | None = None,
89
+ function_name: str | None = None,
89
90
  ):
90
91
  self.metric_set = self._metrics
91
92
  self.metadata_set = self._metadata
@@ -102,6 +103,7 @@ class Metrics:
102
103
  dimension_set=self.dimension_set,
103
104
  metadata_set=self.metadata_set,
104
105
  default_dimensions=self._default_dimensions,
106
+ function_name=function_name,
105
107
  )
106
108
  else:
107
109
  self.provider = provider
@@ -16,6 +16,7 @@ from aws_lambda_powertools.metrics.functions import (
16
16
  extract_cloudwatch_metric_resolution_value,
17
17
  extract_cloudwatch_metric_unit_value,
18
18
  is_metrics_disabled,
19
+ resolve_cold_start_function_name,
19
20
  validate_emf_timestamp,
20
21
  )
21
22
  from aws_lambda_powertools.metrics.provider.base import BaseProvider
@@ -51,6 +52,10 @@ class AmazonCloudWatchEMFProvider(BaseProvider):
51
52
  metric namespace to be set for all metrics
52
53
  POWERTOOLS_SERVICE_NAME : str
53
54
  service name used for default dimension
55
+ POWERTOOLS_METRICS_FUNCTION_NAME: str
56
+ function name used as dimension for the ColdStart metric
57
+ POWERTOOLS_METRICS_DISABLED: bool
58
+ disables all metrics emitted by Powertools
54
59
 
55
60
  Raises
56
61
  ------
@@ -72,12 +77,14 @@ class AmazonCloudWatchEMFProvider(BaseProvider):
72
77
  metadata_set: dict[str, Any] | None = None,
73
78
  service: str | None = None,
74
79
  default_dimensions: dict[str, Any] | None = None,
80
+ function_name: str | None = None,
75
81
  ):
76
82
  self.metric_set = metric_set if metric_set is not None else {}
77
83
  self.dimension_set = dimension_set if dimension_set is not None else {}
78
84
  self.default_dimensions = default_dimensions or {}
79
85
  self.namespace = resolve_env_var_choice(choice=namespace, env=os.getenv(constants.METRICS_NAMESPACE_ENV))
80
86
  self.service = resolve_env_var_choice(choice=service, env=os.getenv(constants.SERVICE_NAME_ENV))
87
+ self.function_name = function_name
81
88
 
82
89
  self.metadata_set = metadata_set if metadata_set is not None else {}
83
90
  self.timestamp: int | None = None
@@ -445,9 +452,11 @@ class AmazonCloudWatchEMFProvider(BaseProvider):
445
452
  context : Any
446
453
  Lambda context
447
454
  """
455
+
456
+ cold_start_function_name = resolve_cold_start_function_name(function_name=self.function_name, context=context)
448
457
  logger.debug("Adding cold start metric and function_name dimension")
449
458
  with single_metric(name="ColdStart", unit=MetricUnit.Count, value=1, namespace=self.namespace) as metric:
450
- metric.add_dimension(name="function_name", value=context.function_name)
459
+ metric.add_dimension(name="function_name", value=cold_start_function_name)
451
460
  if self.service:
452
461
  metric.add_dimension(name="service", value=str(self.service))
453
462
 
@@ -10,7 +10,7 @@ import warnings
10
10
  from typing import TYPE_CHECKING, Any
11
11
 
12
12
  from aws_lambda_powertools.metrics.exceptions import MetricValueError, SchemaValidationError
13
- from aws_lambda_powertools.metrics.functions import is_metrics_disabled
13
+ from aws_lambda_powertools.metrics.functions import is_metrics_disabled, resolve_cold_start_function_name
14
14
  from aws_lambda_powertools.metrics.provider import BaseProvider
15
15
  from aws_lambda_powertools.metrics.provider.datadog.warnings import DatadogDataValidationWarning
16
16
  from aws_lambda_powertools.shared import constants
@@ -58,8 +58,10 @@ class DatadogProvider(BaseProvider):
58
58
  namespace: str | None = None,
59
59
  flush_to_log: bool | None = None,
60
60
  default_tags: dict[str, Any] | None = None,
61
+ function_name: str | None = None,
61
62
  ):
62
63
  self.metric_set = metric_set if metric_set is not None else []
64
+ self.function_name = function_name
63
65
  self.namespace = (
64
66
  resolve_env_var_choice(choice=namespace, env=os.getenv(constants.METRICS_NAMESPACE_ENV))
65
67
  or DEFAULT_NAMESPACE
@@ -224,8 +226,11 @@ class DatadogProvider(BaseProvider):
224
226
  context : Any
225
227
  Lambda context
226
228
  """
229
+
230
+ cold_start_function_name = resolve_cold_start_function_name(function_name=self.function_name, context=context)
231
+
227
232
  logger.debug("Adding cold start metric and function_name tagging")
228
- self.add_metric(name="ColdStart", value=1, function_name=context.function_name)
233
+ self.add_metric(name="ColdStart", value=1, function_name=cold_start_function_name)
229
234
 
230
235
  def log_metrics(
231
236
  self,
@@ -41,6 +41,7 @@ METRICS_NAMESPACE_ENV: str = "POWERTOOLS_METRICS_NAMESPACE"
41
41
  DATADOG_FLUSH_TO_LOG: str = "DD_FLUSH_TO_LOG"
42
42
  SERVICE_NAME_ENV: str = "POWERTOOLS_SERVICE_NAME"
43
43
  METRICS_DISABLED_ENV: str = "POWERTOOLS_METRICS_DISABLED"
44
+ METRICS_FUNCTION_NAME_ENV: str = "POWERTOOLS_METRICS_FUNCTION_NAME"
44
45
  # If the timestamp of log event is more than 2 hours in future, the log event is skipped.
45
46
  # If the timestamp of log event is more than 14 days in past, the log event is skipped.
46
47
  # See https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.8.1a7"
3
+ VERSION = "3.8.1a9"
@@ -495,7 +495,7 @@ class PreTokenGenerationTriggerV2EventRequest(PreTokenGenerationTriggerEventRequ
495
495
  return self.get("scopes") or []
496
496
 
497
497
 
498
- class ClaimsOverrideDetails(DictWrapper):
498
+ class ClaimsOverrideBase(DictWrapper):
499
499
  @property
500
500
  def claims_to_add_or_override(self) -> dict[str, str]:
501
501
  return self.get("claimsToAddOrOverride") or {}
@@ -515,6 +515,8 @@ class ClaimsOverrideDetails(DictWrapper):
515
515
  """A list that contains claims to be suppressed from the identity token."""
516
516
  self._data["claimsToSuppress"] = value
517
517
 
518
+
519
+ class GroupConfigurationBase(DictWrapper):
518
520
  @property
519
521
  def group_configuration(self) -> GroupOverrideDetails | None:
520
522
  group_override_details = self.get("groupOverrideDetails")
@@ -549,26 +551,11 @@ class ClaimsOverrideDetails(DictWrapper):
549
551
  self["groupOverrideDetails"]["preferredRole"] = value
550
552
 
551
553
 
552
- class TokenClaimsAndScopeOverrideDetails(DictWrapper):
553
- @property
554
- def claims_to_add_or_override(self) -> dict[str, str]:
555
- return self.get("claimsToAddOrOverride") or {}
556
-
557
- @claims_to_add_or_override.setter
558
- def claims_to_add_or_override(self, value: dict[str, str]):
559
- """A map of one or more key-value pairs of claims to add or override.
560
- For group related claims, use groupOverrideDetails instead."""
561
- self._data["claimsToAddOrOverride"] = value
562
-
563
- @property
564
- def claims_to_suppress(self) -> list[str]:
565
- return self.get("claimsToSuppress") or []
554
+ class ClaimsOverrideDetails(ClaimsOverrideBase, GroupConfigurationBase):
555
+ pass
566
556
 
567
- @claims_to_suppress.setter
568
- def claims_to_suppress(self, value: list[str]):
569
- """A list that contains claims to be suppressed from the identity token."""
570
- self._data["claimsToSuppress"] = value
571
557
 
558
+ class TokenClaimsAndScopeOverrideDetails(ClaimsOverrideBase):
572
559
  @property
573
560
  def scopes_to_add(self) -> list[str]:
574
561
  return self.get("scopesToAdd") or []
@@ -586,8 +573,7 @@ class TokenClaimsAndScopeOverrideDetails(DictWrapper):
586
573
  self._data["scopesToSuppress"] = value
587
574
 
588
575
 
589
- class ClaimsAndScopeOverrideDetails(DictWrapper):
590
-
576
+ class ClaimsAndScopeOverrideDetails(GroupConfigurationBase):
591
577
  @property
592
578
  def id_token_generation(self) -> TokenClaimsAndScopeOverrideDetails | None:
593
579
  id_token_generation_details = self._data.get("idTokenGeneration")
@@ -632,39 +618,6 @@ class ClaimsAndScopeOverrideDetails(DictWrapper):
632
618
  """
633
619
  self._data["accessTokenGeneration"] = value
634
620
 
635
- @property
636
- def group_configuration(self) -> GroupOverrideDetails | None:
637
- group_override_details = self.get("groupOverrideDetails")
638
- return None if group_override_details is None else GroupOverrideDetails(group_override_details)
639
-
640
- @group_configuration.setter
641
- def group_configuration(self, value: dict[str, Any]):
642
- """The output object containing the current group configuration.
643
-
644
- It includes groupsToOverride, iamRolesToOverride, and preferredRole.
645
-
646
- The groupOverrideDetails object is replaced with the one you provide. If you provide an empty or null
647
- object in the response, then the groups are suppressed. To leave the existing group configuration
648
- as is, copy the value of the request's groupConfiguration object to the groupOverrideDetails object
649
- in the response, and pass it back to the service.
650
- """
651
- self._data["groupOverrideDetails"] = value
652
-
653
- def set_group_configuration_groups_to_override(self, value: list[str]):
654
- """A list of the group names that are associated with the user that the identity token is issued for."""
655
- self._data.setdefault("groupOverrideDetails", {})
656
- self["groupOverrideDetails"]["groupsToOverride"] = value
657
-
658
- def set_group_configuration_iam_roles_to_override(self, value: list[str]):
659
- """A list of the current IAM roles associated with these groups."""
660
- self._data.setdefault("groupOverrideDetails", {})
661
- self["groupOverrideDetails"]["iamRolesToOverride"] = value
662
-
663
- def set_group_configuration_preferred_role(self, value: str):
664
- """A string indicating the preferred IAM role."""
665
- self._data.setdefault("groupOverrideDetails", {})
666
- self["groupOverrideDetails"]["preferredRole"] = value
667
-
668
621
 
669
622
  class PreTokenGenerationTriggerEventResponse(DictWrapper):
670
623
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: aws_lambda_powertools
3
- Version: 3.8.1a7
3
+ Version: 3.8.1a9
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
@@ -49,26 +49,26 @@ aws_lambda_powertools/logging/formatter.py,sha256=dmE6XXmkWVkYbWdy1Kg69TYJJ0yDXf
49
49
  aws_lambda_powertools/logging/formatters/__init__.py,sha256=OqddpJcWMqRYhx5SFy-SPqtt72tkRZbfpEi_oCC47eI,301
50
50
  aws_lambda_powertools/logging/formatters/datadog.py,sha256=NwaaBOp7jIlOAH158NzyvW-EwmWqqnYX9f7Uu_nIUYQ,3169
51
51
  aws_lambda_powertools/logging/lambda_context.py,sha256=VHst_6hxMpXgScoxNwaC61UXPTIdd3AEBHTPzb4esPc,1736
52
- aws_lambda_powertools/logging/logger.py,sha256=rRvHggw3XjAg3xJw6ngZZx3eMUQybSFCJ-rSX5ZnsPc,48342
52
+ aws_lambda_powertools/logging/logger.py,sha256=h4jAJMXRZhYQv84j0bnzyxaHUzN1RePn1XdS9yH5imM,48679
53
53
  aws_lambda_powertools/logging/types.py,sha256=Zc95nGdZ2sJUEPdwR0uoArT_F-JSKfpS_LokdCVO0nQ,1263
54
54
  aws_lambda_powertools/logging/utils.py,sha256=NirAObjkkarN5fX2diHs0Ln_8KHLueviL-jCKhckIBM,4069
55
55
  aws_lambda_powertools/metrics/__init__.py,sha256=B5FpJS_VR7zivm2ylvUF8RHBthKz4aDk0VA5GpDn3Tk,592
56
56
  aws_lambda_powertools/metrics/base.py,sha256=Ric6mWDekLgbGHgCW706vdTob40FiIsXvbA50HEDyBo,23774
57
57
  aws_lambda_powertools/metrics/exceptions.py,sha256=HX9k4L4RXI9Ol8kVr5U9FYmUsrN_3v2tugAmzNVp0ng,418
58
- aws_lambda_powertools/metrics/functions.py,sha256=HdV8WdZrHQIzvVJL14kJuPxfzBrPzxANKAs0TAqIfAc,5152
58
+ aws_lambda_powertools/metrics/functions.py,sha256=Njw-gKtAt_YpKw5ltQMcKFbGvJBFbs3J60t3C0oczB4,6190
59
59
  aws_lambda_powertools/metrics/metric.py,sha256=utHoGjKlx-e1zhgq51ChXRGx3MNSNv3qwanWhlksY0s,165
60
- aws_lambda_powertools/metrics/metrics.py,sha256=jSNf_NXe4hAJvH7h7jSzyM4o4JXOMDO3B3kNd-d5SGQ,8159
60
+ aws_lambda_powertools/metrics/metrics.py,sha256=wy06nwBDzR03EHQxJ0N2S82fVHD47l237G1dvUQcaD8,8246
61
61
  aws_lambda_powertools/metrics/provider/__init__.py,sha256=7Cg6Rwzy6pYW6LjeWGEl0opDaKleBSGrMPfGNXCH1i4,104
62
62
  aws_lambda_powertools/metrics/provider/base.py,sha256=w1JBW2uYezxdYv3BbersCpzS4-GEfm9G8xk4opS1C-o,6879
63
63
  aws_lambda_powertools/metrics/provider/cloudwatch_emf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py,sha256=wXm9qzE7bI6j65nC9AlKlaLBbk0SRAXsSJ1cplh_2jU,18177
64
+ aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py,sha256=7o830Az2VksFAQQPZqGK7HEmz4Z8D-lHdemd_1aLRCQ,18619
65
65
  aws_lambda_powertools/metrics/provider/cloudwatch_emf/constants.py,sha256=ByQMR69yb7CWkHvdI8fToZwJGTVDsiFuM1xijvyzuG8,38
66
66
  aws_lambda_powertools/metrics/provider/cloudwatch_emf/exceptions.py,sha256=FdDzZ5sMLvZQqv2XR55haKdhVuCCCSYIHoat3h-ZpNI,218
67
67
  aws_lambda_powertools/metrics/provider/cloudwatch_emf/metric_properties.py,sha256=pzVuLOFzjyau1GGvTNpHQvmrPXDWpPeG16FaBEsHCH0,1007
68
68
  aws_lambda_powertools/metrics/provider/cloudwatch_emf/types.py,sha256=Rhnn9VkPX41tVjV1dOTqk3gyPRnvcpSNDFC2m2kjSaQ,587
69
69
  aws_lambda_powertools/metrics/provider/cold_start.py,sha256=j-_Mtsr4DnsItiTdrNnx63zH_wsonl9xsGAb8QuKGSs,168
70
70
  aws_lambda_powertools/metrics/provider/datadog/__init__.py,sha256=3LivCIwqyI7KKEeSLDcxN1Z9RObChoMg5hpiXPin2C0,225
71
- aws_lambda_powertools/metrics/provider/datadog/datadog.py,sha256=yBAJGfBk0dx-u6Q-FgCEw74zy2o24Cfksq89TJR8cxU,14248
71
+ aws_lambda_powertools/metrics/provider/datadog/datadog.py,sha256=zw-AtT4gPqqNLjsQe99flB4eIK-CE1bbWaaSa9D5cFg,14491
72
72
  aws_lambda_powertools/metrics/provider/datadog/metrics.py,sha256=_7dx4sSx6aXGJ2uv3iisqr6AyqmKjHBATOLdI1hjJhw,4285
73
73
  aws_lambda_powertools/metrics/provider/datadog/warnings.py,sha256=tpnTQNhb6NhQp_NZSgUR4SsDSASqG6XBpzPZBgSVXlw,191
74
74
  aws_lambda_powertools/metrics/types.py,sha256=6EhODeacBtnAslVf-YVZ3iPNIE3RwDN95DtuIpefpmA,185
@@ -79,7 +79,7 @@ aws_lambda_powertools/package_logger.py,sha256=Q2QX1JXDdc-Piekk1r19qEIDUMN2i4ZZK
79
79
  aws_lambda_powertools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  aws_lambda_powertools/shared/__init__.py,sha256=o2ycxf3MCYfWXm1P-zuTKap_uzJiu8uYmVcCX7s4gUk,75
81
81
  aws_lambda_powertools/shared/cache_dict.py,sha256=X3Ykh-_Fb4Wkc5RGjaostC_FUvMyY_H1L2bOB89A3vM,916
82
- aws_lambda_powertools/shared/constants.py,sha256=lIEs2_5080qhCp7l_v_rdjXud5uF0Dlf-4VniDdIJCI,2737
82
+ aws_lambda_powertools/shared/constants.py,sha256=Na17ZV15AgUqWdkrNg-WYXv8FEqwY1ga7KwClgePoG4,2805
83
83
  aws_lambda_powertools/shared/cookies.py,sha256=X2Bkcf7MAmV75PJFm07QGkL4n1psk4HIGpUxzrsjiJY,3868
84
84
  aws_lambda_powertools/shared/dynamodb_deserializer.py,sha256=tWw8MLXEitInnViFkt_xSBkXD_V1n1KcWbqBXBxwUlE,4054
85
85
  aws_lambda_powertools/shared/functions.py,sha256=N5VIND3xW-eZHqY2uPsBMtDbtMx64iklUKByeCh58rc,7625
@@ -88,7 +88,7 @@ aws_lambda_powertools/shared/json_encoder.py,sha256=JQeWNu-4M7_xI_hqYExrxsb3OcEH
88
88
  aws_lambda_powertools/shared/lazy_import.py,sha256=TbXQm2bcwXdZrYdBaJJXIswyLlumM85RJ_A_0w-h-GU,2019
89
89
  aws_lambda_powertools/shared/types.py,sha256=APkI38HbiTpSF19NSNii8Ydx73vmVUVotgEQ9jHruEI,124
90
90
  aws_lambda_powertools/shared/user_agent.py,sha256=DrCMFQuT4a4iIrpcWpAIjY37EFqR9-QxlxDGD-Nn9Gg,7081
91
- aws_lambda_powertools/shared/version.py,sha256=EsjrLB62lRVYYW-NBPCe29q1U_Ul8a8p9t-rG1xRt1o,84
91
+ aws_lambda_powertools/shared/version.py,sha256=0GimQ5exesjPqSg5Vhs7H9b-rMcb1FBGy3N7PNMhxSk,84
92
92
  aws_lambda_powertools/tracing/__init__.py,sha256=f4bMThOPBPWTPVcYqcAIErAJPerMsf3H_Z4gCXCsK9I,141
93
93
  aws_lambda_powertools/tracing/base.py,sha256=DbLD8OSK05KLdSV36oNA5wDSGv8KbcOD19qMUqoXh58,4513
94
94
  aws_lambda_powertools/tracing/extensions.py,sha256=APOfXOq-hRBKaK5WyfIyrd_6M1_9SWJZ3zxLA9jDZzU,492
@@ -118,7 +118,7 @@ aws_lambda_powertools/utilities/data_classes/cloud_watch_logs_event.py,sha256=uu
118
118
  aws_lambda_powertools/utilities/data_classes/cloudformation_custom_resource_event.py,sha256=EextMoBG9v_e5bS9Q1DlzVvzljGtIL1ddBszt5fgTeY,1191
119
119
  aws_lambda_powertools/utilities/data_classes/code_deploy_lifecycle_hook_event.py,sha256=chJSwmEj7GcKNlqY3HyWHOuhQIQSjqvA4fUxs-PxovA,464
120
120
  aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py,sha256=Y5INxxycG87n55YvRq4h5TXMJNXXB3Ac38zvXg5f_h4,10530
121
- aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py,sha256=YQm1Lnzbj3ZGZ2SvoF-t0FPlFJPXWO-hc62494UdPzA,42936
121
+ aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py,sha256=oHYYcFYeX5bQp7avtrLtwizWqSmJzLA3qqVvZ4ybj94,40540
122
122
  aws_lambda_powertools/utilities/data_classes/common.py,sha256=PFQBhmGPvBtvdUtzk1wtEokFpatZkUl4s6C6x6lvCGU,19505
123
123
  aws_lambda_powertools/utilities/data_classes/connect_contact_flow_event.py,sha256=4_L73ATO-M_2zUD3r0zS4c6I4zoLxTK9l8JQc-dATog,5468
124
124
  aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py,sha256=BrgOyFREC9gjj_ULhKB3L_7EbQ6ptV-8Was1TulPeWE,6102
@@ -257,7 +257,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
257
257
  aws_lambda_powertools/utilities/validation/exceptions.py,sha256=PKy_19zQMBJGCMMFl-sMkcm-cc0v3zZBn_bhGE4wKNo,2084
258
258
  aws_lambda_powertools/utilities/validation/validator.py,sha256=x_1qpuKJBuWpgNU-zCD3Di-vXrZfyUu7oA5RmjZjr84,10034
259
259
  aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
260
- aws_lambda_powertools-3.8.1a7.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
261
- aws_lambda_powertools-3.8.1a7.dist-info/METADATA,sha256=quEwdR2Z6Uv-wQCqJ6JGtySvQ2Cwuf9vr7dJrbWWCkA,11156
262
- aws_lambda_powertools-3.8.1a7.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
263
- aws_lambda_powertools-3.8.1a7.dist-info/RECORD,,
260
+ aws_lambda_powertools-3.8.1a9.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
261
+ aws_lambda_powertools-3.8.1a9.dist-info/METADATA,sha256=aZYnZlk41Yz_72E1iQe_wBMG0Nz86xNm0lq6ZWyebvk,11156
262
+ aws_lambda_powertools-3.8.1a9.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
263
+ aws_lambda_powertools-3.8.1a9.dist-info/RECORD,,