Skip to content

Commit 322ceb1

Browse files
committed
Merge branch 'develop' into chore/revert-cdk-dep
* develop: (21 commits) chore: cleanup, add test for single and nested fix(parameters): make cache aware of single vs multiple calls docs: Add nathan hanks post community (aws-powertools#3727) chore(deps-dev): bump isort from 5.11.5 to 5.13.2 (aws-powertools#3723) chore(deps-dev): bump cfn-lint from 0.83.8 to 0.85.0 (aws-powertools#3724) chore(deps): bump actions/download-artifact from 4.1.1 to 4.1.2 (aws-powertools#3725) chore(deps-dev): bump types-python-dateutil from 2.8.19.14 to 2.8.19.20240106 (aws-powertools#3720) chore(ci): enable Redis e2e tests (aws-powertools#3718) chore(deps-dev): bump pytest from 7.4.4 to 8.0.0 (aws-powertools#3711) chore(deps): bump actions/upload-artifact from 3.1.3 to 4.3.1 (aws-powertools#3714) chore(ci): changelog rebuild (aws-powertools#3715) chore(deps-dev): bump mypy from 1.4.1 to 1.8.0 (aws-powertools#3710) chore(deps-dev): bump httpx from 0.24.1 to 0.26.0 (aws-powertools#3712) chore(deps): bump actions/download-artifact from 3.0.2 to 4.1.1 (aws-powertools#3612) chore(deps): bump codecov/codecov-action from 3.1.6 to 4.0.1 (aws-powertools#3700) chore(deps-dev): bump coverage from 7.2.7 to 7.4.1 (aws-powertools#3713) chore(deps-dev): bump the boto-typing group with 7 updates (aws-powertools#3709) chore(deps): bump squidfunk/mkdocs-material from `a4a2029` to `e0d6c67` in /docs (aws-powertools#3708) chore(deps): bump release-drafter/release-drafter from 5.25.0 to 6.0.0 (aws-powertools#3699) chore(ci): drop support for Python 3.7 (aws-powertools#3638) ...
2 parents 73b2ad1 + e7d8dae commit 322ceb1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+300
-754
lines changed

Diff for: .github/ISSUE_TEMPLATE/bug_report.yml

-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ body:
5858
attributes:
5959
label: AWS Lambda function runtime
6060
options:
61-
- "3.7"
6261
- "3.8"
6362
- "3.9"
6463
- "3.10"

Diff for: .github/ISSUE_TEMPLATE/static_typing.yml

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ body:
2525
attributes:
2626
label: AWS Lambda function runtime
2727
options:
28-
- "3.7"
2928
- "3.8"
3029
- "3.9"
3130
- "3.10"

Diff for: .github/workflows/dependency-review.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ jobs:
1919
- name: 'Checkout Repository'
2020
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
2121
- name: 'Dependency Review'
22-
uses: actions/dependency-review-action@c74b580d73376b7750d3d2a50bfb8adc2c937507 # v3.1.5
22+
uses: actions/dependency-review-action@4901385134134e04cec5fbe5ddfe3b2c5bd5d976 # v4.0.0

Diff for: .github/workflows/ossf_scorecard.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
repo_token: ${{ secrets.SCORECARD_TOKEN }} # read-only fine-grained token to read branch protection settings
3636

3737
- name: "Upload results"
38-
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
38+
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
3939
with:
4040
name: SARIF file
4141
path: results.sarif

Diff for: .github/workflows/publish_v2_layer.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ jobs:
146146
- name: zip output
147147
run: zip -r cdk.out.zip cdk.out
148148
- name: Archive CDK artifacts
149-
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
149+
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
150150
with:
151151
name: cdk-layer-artefact
152152
path: layer/cdk.out.zip
@@ -258,7 +258,7 @@ jobs:
258258
artifact_name: ${{ inputs.source_code_artifact_name }}
259259

260260
- name: Download CDK layer artifact
261-
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
261+
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
262262
with:
263263
name: cdk-layer-stack
264264
path: cdk-layer-stack/

Diff for: .github/workflows/quality_check.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
strategy:
4545
max-parallel: 4
4646
matrix:
47-
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
47+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
4848
env:
4949
PYTHON: "${{ matrix.python-version }}"
5050
permissions:
@@ -71,7 +71,7 @@ jobs:
7171
- name: Complexity baseline
7272
run: make complexity-baseline
7373
- name: Upload coverage to Codecov
74-
uses: codecov/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # 3.1.6
74+
uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # 4.0.1
7575
with:
7676
file: ./coverage.xml
7777
env_vars: PYTHON

Diff for: .github/workflows/quality_check_pydanticv2.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
strategy:
4444
max-parallel: 4
4545
matrix:
46-
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
46+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
4747
env:
4848
PYTHON: "${{ matrix.python-version }}"
4949
permissions:

Diff for: .github/workflows/record_pr.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
script: |
5454
const script = require('.github/scripts/save_pr_details.js')
5555
await script({github, context, core})
56-
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
56+
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
5757
with:
5858
name: pr
5959
path: pr.txt

Diff for: .github/workflows/release-drafter.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ jobs:
2727
permissions:
2828
contents: write # create release in draft mode
2929
steps:
30-
- uses: release-drafter/release-drafter@09c613e259eb8d4e7c81c2cb00618eb5fc4575a7 # v5.20.1
30+
- uses: release-drafter/release-drafter@3f0f87098bd6b5c5b9a36d49c41d998ea58f9348 # v5.20.1
3131
env:
3232
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Diff for: .github/workflows/reusable_deploy_v2_layer_stack.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ jobs:
180180
- name: install deps
181181
run: poetry install
182182
- name: Download artifact
183-
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
183+
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
184184
with:
185185
name: ${{ inputs.artefact-name }}
186186
path: layer
@@ -197,11 +197,12 @@ jobs:
197197
cat cdk-layer-stack/${{ matrix.region }}-layer-version.txt
198198
- name: Save Layer ARN artifact
199199
if: ${{ inputs.stage == 'PROD' }}
200-
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
200+
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
201201
with:
202202
name: cdk-layer-stack
203203
path: ./layer/cdk-layer-stack/* # NOTE: upload-artifact does not inherit working-directory setting.
204204
if-no-files-found: error
205205
retention-days: 1
206+
overwrite: true
206207
- name: CDK Deploy Canary
207208
run: npx cdk deploy --app cdk.out --context region=${{ matrix.region }} --parameters DeployStage="${{ inputs.stage }}" --parameters HasARM64Support=${{ matrix.has_arm64_support }} 'CanaryV2Stack' --require-approval never --verbose

Diff for: .github/workflows/reusable_deploy_v2_sar.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jobs:
115115
with:
116116
node-version: ${{ env.NODE_VERSION }}
117117
- name: Download artifact
118-
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
118+
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
119119
with:
120120
name: ${{ inputs.artefact-name }}
121121
- name: Unzip artefact

Diff for: .github/workflows/run-e2e-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
strategy:
4848
fail-fast: false # needed so if a version fails, the others will still be able to complete and cleanup
4949
matrix:
50-
version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
50+
version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
5151
if: ${{ github.actor != 'dependabot[bot]' && github.repository == 'aws-powertools/powertools-lambda-python' }}
5252
steps:
5353
- name: "Checkout"

Diff for: CHANGELOG.md

+10
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66

77
## Maintenance
88

9+
* **ci:** drop support for Python 3.7 ([#3638](https://github.com/aws-powertools/powertools-lambda-python/issues/3638))
10+
* **deps:** bump squidfunk/mkdocs-material from `a4a2029` to `e0d6c67` in /docs ([#3708](https://github.com/aws-powertools/powertools-lambda-python/issues/3708))
11+
* **deps:** bump release-drafter/release-drafter from 5.25.0 to 6.0.0 ([#3699](https://github.com/aws-powertools/powertools-lambda-python/issues/3699))
12+
* **deps:** bump actions/dependency-review-action from 3.1.5 to 4.0.0 ([#3646](https://github.com/aws-powertools/powertools-lambda-python/issues/3646))
13+
* **deps:** bump codecov/codecov-action from 3.1.6 to 4.0.1 ([#3700](https://github.com/aws-powertools/powertools-lambda-python/issues/3700))
14+
* **deps:** bump actions/download-artifact from 3.0.2 to 4.1.1 ([#3612](https://github.com/aws-powertools/powertools-lambda-python/issues/3612))
15+
* **deps-dev:** bump the boto-typing group with 7 updates ([#3709](https://github.com/aws-powertools/powertools-lambda-python/issues/3709))
16+
* **deps-dev:** bump coverage from 7.2.7 to 7.4.1 ([#3713](https://github.com/aws-powertools/powertools-lambda-python/issues/3713))
17+
* **deps-dev:** bump ruff from 0.1.15 to 0.2.0 ([#3702](https://github.com/aws-powertools/powertools-lambda-python/issues/3702))
918
* **deps-dev:** bump aws-cdk from 2.125.0 to 2.126.0 ([#3701](https://github.com/aws-powertools/powertools-lambda-python/issues/3701))
19+
* **deps-dev:** bump httpx from 0.24.1 to 0.26.0 ([#3712](https://github.com/aws-powertools/powertools-lambda-python/issues/3712))
1020

1121

1222
<a name="v2.33.0"></a>

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
[![Build](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/quality_check.yml/badge.svg)](https://github.com/aws-powertools/powertools-lambda-python/actions/workflows/python_build.yml)
55
[![codecov.io](https://codecov.io/github/aws-powertools/powertools-lambda-python/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/aws-powertools/powertools-lambda-python)
6-
![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.7|%203.8|%203.9|%203.10|%203.11|%203.12&color=blue?style=flat-square&logo=python) ![PyPI version](https://badge.fury.io/py/aws-lambda-powertools.svg) ![PyPi monthly downloads](https://img.shields.io/pypi/dm/aws-lambda-powertools) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python/badge)](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET)](https://discord.gg/B8zZKbbyET)
6+
![PythonSupport](https://img.shields.io/static/v1?label=python&message=%203.8|%203.9|%203.10|%203.11|%203.12&color=blue?style=flat-square&logo=python) ![PyPI version](https://badge.fury.io/py/aws-lambda-powertools.svg) ![PyPi monthly downloads](https://img.shields.io/pypi/dm/aws-lambda-powertools) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python/badge)](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-python) [![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET)](https://discord.gg/B8zZKbbyET)
77

88
Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless [best practices and increase developer velocity](https://docs.powertools.aws.dev/lambda/python/latest/#features).
99

Diff for: aws_lambda_powertools/logging/compat.py

-51
This file was deleted.

Diff for: aws_lambda_powertools/logging/logger.py

-22
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
overload,
2323
)
2424

25-
from aws_lambda_powertools.logging import compat
2625
from aws_lambda_powertools.shared import constants
2726
from aws_lambda_powertools.shared.functions import (
2827
extract_event_from_common_models,
@@ -302,9 +301,6 @@ def _init_logger(
302301
self.addHandler(self.logger_handler)
303302
self.structure_logs(formatter_options=formatter_options, **kwargs)
304303

305-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
306-
self._logger.findCaller = compat.findCaller # type: ignore[method-assign]
307-
308304
# Pytest Live Log feature duplicates log records for colored output
309305
# but we explicitly add a filter for log deduplication.
310306
# This flag disables this protection when you explicit want logs to be duplicated (#262)
@@ -467,9 +463,6 @@ def info(
467463
extra = extra or {}
468464
extra = {**extra, **kwargs}
469465

470-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
471-
if sys.version_info < (3, 8): # pragma: no cover
472-
return self._logger.info(msg, *args, exc_info=exc_info, stack_info=stack_info, extra=extra)
473466
return self._logger.info(
474467
msg,
475468
*args,
@@ -492,9 +485,6 @@ def error(
492485
extra = extra or {}
493486
extra = {**extra, **kwargs}
494487

495-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
496-
if sys.version_info < (3, 8): # pragma: no cover
497-
return self._logger.error(msg, *args, exc_info=exc_info, stack_info=stack_info, extra=extra)
498488
return self._logger.error(
499489
msg,
500490
*args,
@@ -517,9 +507,6 @@ def exception(
517507
extra = extra or {}
518508
extra = {**extra, **kwargs}
519509

520-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
521-
if sys.version_info < (3, 8): # pragma: no cover
522-
return self._logger.exception(msg, *args, exc_info=exc_info, stack_info=stack_info, extra=extra)
523510
return self._logger.exception(
524511
msg,
525512
*args,
@@ -542,9 +529,6 @@ def critical(
542529
extra = extra or {}
543530
extra = {**extra, **kwargs}
544531

545-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
546-
if sys.version_info < (3, 8): # pragma: no cover
547-
return self._logger.critical(msg, *args, exc_info=exc_info, stack_info=stack_info, extra=extra)
548532
return self._logger.critical(
549533
msg,
550534
*args,
@@ -567,9 +551,6 @@ def warning(
567551
extra = extra or {}
568552
extra = {**extra, **kwargs}
569553

570-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
571-
if sys.version_info < (3, 8): # pragma: no cover
572-
return self._logger.warning(msg, *args, exc_info=exc_info, stack_info=stack_info, extra=extra)
573554
return self._logger.warning(
574555
msg,
575556
*args,
@@ -592,9 +573,6 @@ def debug(
592573
extra = extra or {}
593574
extra = {**extra, **kwargs}
594575

595-
# Maintenance: We can drop this upon Py3.7 EOL. It's a backport for "location" key to work
596-
if sys.version_info < (3, 8): # pragma: no cover
597-
return self._logger.debug(msg, *args, exc_info=exc_info, stack_info=stack_info, extra=extra)
598576
return self._logger.debug(
599577
msg,
600578
*args,

Diff for: aws_lambda_powertools/metrics/provider/cloudwatch_emf/cloudwatch.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,8 @@ def serialize_metric_set(
241241
],
242242
},
243243
# NOTE: Mypy doesn't recognize splats '** syntax' in TypedDict
244-
**dimensions, # type: ignore[misc] # "service": "test_service"
245-
**metadata, # "username": "test"
244+
**dimensions, # "service": "test_service"
245+
**metadata, # type: ignore[typeddict-item] # "username": "test"
246246
**metric_names_and_values, # "single_metric": 1.0
247247
}
248248

Diff for: aws_lambda_powertools/shared/types.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import sys
2-
from typing import Any, Callable, Dict, List, TypeVar, Union
3-
4-
if sys.version_info >= (3, 8):
5-
from typing import Literal, Protocol, TypedDict
6-
else:
7-
from typing_extensions import Literal, Protocol, TypedDict
2+
from typing import Any, Callable, Dict, List, Literal, Protocol, TypedDict, TypeVar, Union
83

94
if sys.version_info >= (3, 9):
105
from typing import Annotated
@@ -16,7 +11,6 @@
1611
else:
1712
from typing_extensions import NotRequired
1813

19-
2014
# Even though `get_args` and `get_origin` were added in Python 3.8, they only handle Annotated correctly on 3.10.
2115
# So for python < 3.10 we use the backport from typing_extensions.
2216
if sys.version_info >= (3, 10):

Diff for: aws_lambda_powertools/utilities/data_classes/active_mq_event.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from functools import cached_property
12
from typing import Any, Dict, Iterator, Optional
23

34
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
@@ -23,12 +24,9 @@ def decoded_data(self) -> str:
2324
"""Decodes the data as a str"""
2425
return base64_decode(self.data)
2526

26-
@property
27+
@cached_property
2728
def json_data(self) -> Any:
28-
"""Parses the data as json"""
29-
if self._json_data is None:
30-
self._json_data = self._json_deserializer(self.decoded_data)
31-
return self._json_data
29+
return self._json_deserializer(self.decoded_data)
3230

3331
@property
3432
def connection_id(self) -> str:

Diff for: aws_lambda_powertools/utilities/data_classes/code_pipeline_job_event.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import tempfile
22
import zipfile
3+
from functools import cached_property
34
from typing import Any, Dict, List, Optional
45
from urllib.parse import unquote_plus
56

@@ -17,12 +18,13 @@ def user_parameters(self) -> Optional[str]:
1718
"""User parameters"""
1819
return self.get("UserParameters", None)
1920

20-
@property
21+
@cached_property
2122
def decoded_user_parameters(self) -> Optional[Dict[str, Any]]:
2223
"""Json Decoded user parameters"""
23-
if self._json_data is None and self.user_parameters is not None:
24-
self._json_data = self._json_deserializer(self.user_parameters)
25-
return self._json_data
24+
if self.user_parameters is not None:
25+
return self._json_deserializer(self.user_parameters)
26+
27+
return None
2628

2729

2830
class CodePipelineActionConfiguration(DictWrapper):

0 commit comments

Comments
 (0)