aws-lambda-powertools 3.7.1a0__py3-none-any.whl → 3.7.1a2__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.
@@ -220,6 +220,10 @@ class Logger:
220
220
  serialize_stacktrace: bool = True,
221
221
  **kwargs,
222
222
  ) -> None:
223
+
224
+ # Used in case of sampling
225
+ self.initial_log_level = self._determine_log_level(level)
226
+
223
227
  self.service = resolve_env_var_choice(
224
228
  choice=service,
225
229
  env=os.getenv(constants.SERVICE_NAME_ENV, "service_undefined"),
@@ -339,6 +343,17 @@ class Logger:
339
343
  self._logger.init = True # type: ignore[attr-defined]
340
344
  self._logger.powertools_handler = self.logger_handler # type: ignore[attr-defined]
341
345
 
346
+ def refresh_sample_rate_calculation(self) -> None:
347
+ """
348
+ Refreshes the sample rate calculation by reconfiguring logging settings.
349
+
350
+ Returns
351
+ -------
352
+ None
353
+ """
354
+ self._logger.setLevel(self.initial_log_level)
355
+ self._configure_sampling()
356
+
342
357
  def _configure_sampling(self) -> None:
343
358
  """Dynamically set log level based on sampling rate
344
359
 
@@ -347,15 +362,20 @@ class Logger:
347
362
  InvalidLoggerSamplingRateError
348
363
  When sampling rate provided is not a float
349
364
  """
365
+ if not self.sampling_rate:
366
+ return
367
+
350
368
  try:
351
- if self.sampling_rate and random.random() <= float(self.sampling_rate):
352
- logger.debug("Setting log level to Debug due to sampling rate")
369
+ # This is not testing < 0 or > 1 conditions
370
+ # Because I don't need other if condition here
371
+ if random.random() <= float(self.sampling_rate):
353
372
  self._logger.setLevel(logging.DEBUG)
373
+ logger.debug("Setting log level to DEBUG due to sampling rate")
354
374
  except ValueError:
355
375
  raise InvalidLoggerSamplingRateError(
356
376
  (
357
377
  f"Expected a float value ranging 0 to 1, but received {self.sampling_rate} instead."
358
- "Please review POWERTOOLS_LOGGER_SAMPLE_RATE environment variable."
378
+ "Please review POWERTOOLS_LOGGER_SAMPLE_RATE environment variable or `sampling_rate` parameter."
359
379
  ),
360
380
  )
361
381
 
@@ -465,6 +485,12 @@ class Logger:
465
485
  logger.debug("Event received")
466
486
  self.info(extract_event_from_common_models(event))
467
487
 
488
+ # Sampling rate is defined, and this is not ColdStart
489
+ # then we need to recalculate the sampling
490
+ # See: https://github.com/aws-powertools/powertools-lambda-python/issues/6141
491
+ if self.sampling_rate and not cold_start:
492
+ self.refresh_sample_rate_calculation()
493
+
468
494
  return lambda_handler(event, context, *args, **kwargs)
469
495
 
470
496
  return decorate
@@ -1,3 +1,3 @@
1
1
  """Exposes version constant to avoid circular dependencies."""
2
2
 
3
- VERSION = "3.7.1a0"
3
+ VERSION = "3.7.1a2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: aws_lambda_powertools
3
- Version: 3.7.1a0
3
+ Version: 3.7.1a2
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
@@ -44,7 +44,7 @@ aws_lambda_powertools/logging/formatter.py,sha256=dmE6XXmkWVkYbWdy1Kg69TYJJ0yDXf
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=Mj_XRyetPLbFd_OqlP_GkvkI93cPIIW4F0MRgxi1wQs,34924
47
+ aws_lambda_powertools/logging/logger.py,sha256=r9VACN9W72VMMqxbhbRYz9dREhX5pkk5hUf5MtS9u_8,35824
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=ILjLMM6Ed-2HVhr0dTOPKCJ15XN8wX1EuNrp4XLBMic,84
86
+ aws_lambda_powertools/shared/version.py,sha256=E-iURQ7y7IJ0t0cJU7SdPvNeF_MARrQyH_0S-tuVU9Y,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
@@ -251,7 +251,7 @@ aws_lambda_powertools/utilities/validation/envelopes.py,sha256=YD5HOFx6IClQgii0n
251
251
  aws_lambda_powertools/utilities/validation/exceptions.py,sha256=PKy_19zQMBJGCMMFl-sMkcm-cc0v3zZBn_bhGE4wKNo,2084
252
252
  aws_lambda_powertools/utilities/validation/validator.py,sha256=x_1qpuKJBuWpgNU-zCD3Di-vXrZfyUu7oA5RmjZjr84,10034
253
253
  aws_lambda_powertools/warnings/__init__.py,sha256=vqDVeZz8wGtD8WGYNSkQE7AHwqtIrPGRxuoJR_BBnSs,1193
254
- aws_lambda_powertools-3.7.1a0.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
255
- aws_lambda_powertools-3.7.1a0.dist-info/METADATA,sha256=kdq4S1vY3Ub_0kDX7wvB3vfu1utVHXe_hsL31uuHVo0,11151
256
- aws_lambda_powertools-3.7.1a0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
257
- aws_lambda_powertools-3.7.1a0.dist-info/RECORD,,
254
+ aws_lambda_powertools-3.7.1a2.dist-info/LICENSE,sha256=vMHS2eBgmwPUIMPb7LQ4p7ib_FPVQXarVjAasflrTwo,951
255
+ aws_lambda_powertools-3.7.1a2.dist-info/METADATA,sha256=zCh4tBMnAiNh7yABs2WM42ALRmZgxz1J6lYKxn4RU-Q,11151
256
+ aws_lambda_powertools-3.7.1a2.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
257
+ aws_lambda_powertools-3.7.1a2.dist-info/RECORD,,