Skip to content

Commit 36629d5

Browse files
Merging from develop
2 parents c04d6e1 + 3e45ae1 commit 36629d5

File tree

17 files changed

+6019
-29
lines changed

17 files changed

+6019
-29
lines changed

CHANGELOG.md

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,47 @@
66

77
## Bug Fixes
88

9+
* **batch:** ensure Python 3.14 compatibility for async event loop handling ([#7599](https://github.com/aws-powertools/powertools-lambda-python/issues/7599))
10+
* **event-handler:** preserve metadata constraints in parameter validation ([#7609](https://github.com/aws-powertools/powertools-lambda-python/issues/7609))
911
* **typing:** Fix type of Metrics.set_timestamp argument ([#7582](https://github.com/aws-powertools/powertools-lambda-python/issues/7582))
1012

13+
## Documentation
14+
15+
* **tracer:** fix typo in the tracer documentation ([#7617](https://github.com/aws-powertools/powertools-lambda-python/issues/7617))
16+
1117
## Maintenance
1218

1319
* **ci:** new pre-release 3.22.1a3 ([#7591](https://github.com/aws-powertools/powertools-lambda-python/issues/7591))
20+
* **ci:** new pre-release 3.22.1a7 ([#7625](https://github.com/aws-powertools/powertools-lambda-python/issues/7625))
21+
* **ci:** new pre-release 3.22.1a6 ([#7615](https://github.com/aws-powertools/powertools-lambda-python/issues/7615))
1422
* **ci:** new pre-release 3.22.1a0 ([#7567](https://github.com/aws-powertools/powertools-lambda-python/issues/7567))
1523
* **ci:** new pre-release 3.22.1a1 ([#7583](https://github.com/aws-powertools/powertools-lambda-python/issues/7583))
1624
* **ci:** new pre-release 3.22.1a2 ([#7588](https://github.com/aws-powertools/powertools-lambda-python/issues/7588))
17-
* **deps:** bump redis from 7.0.0 to 7.0.1 ([#7586](https://github.com/aws-powertools/powertools-lambda-python/issues/7586))
25+
* **ci:** new pre-release 3.22.1a4 ([#7597](https://github.com/aws-powertools/powertools-lambda-python/issues/7597))
26+
* **ci:** new pre-release 3.22.1a5 ([#7607](https://github.com/aws-powertools/powertools-lambda-python/issues/7607))
1827
* **deps:** bump redis from 6.4.0 to 7.0.0 ([#7570](https://github.com/aws-powertools/powertools-lambda-python/issues/7570))
1928
* **deps:** bump actions/upload-artifact from 4.6.2 to 5.0.0 ([#7578](https://github.com/aws-powertools/powertools-lambda-python/issues/7578))
29+
* **deps:** bump aws-xray-sdk from 2.14.0 to 2.15.0 ([#7603](https://github.com/aws-powertools/powertools-lambda-python/issues/7603))
2030
* **deps:** bump actions/download-artifact from 5.0.0 to 6.0.0 ([#7577](https://github.com/aws-powertools/powertools-lambda-python/issues/7577))
21-
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.220.0a0 to 2.221.0a0 ([#7580](https://github.com/aws-powertools/powertools-lambda-python/issues/7580))
22-
* **deps-dev:** bump aws-cdk from 2.1030.0 to 2.1031.0 ([#7569](https://github.com/aws-powertools/powertools-lambda-python/issues/7569))
23-
* **deps-dev:** bump ruff from 0.14.1 to 0.14.2 ([#7575](https://github.com/aws-powertools/powertools-lambda-python/issues/7575))
31+
* **deps:** bump mkdocs-material from 9.6.22 to 9.6.23 ([#7624](https://github.com/aws-powertools/powertools-lambda-python/issues/7624))
32+
* **deps:** bump redis from 7.0.0 to 7.0.1 ([#7586](https://github.com/aws-powertools/powertools-lambda-python/issues/7586))
33+
* **deps:** bump squidfunk/mkdocs-material from `f5c556a` to `58dee36` in /docs ([#7622](https://github.com/aws-powertools/powertools-lambda-python/issues/7622))
2434
* **deps-dev:** bump boto3-stubs from 1.40.59 to 1.40.60 ([#7587](https://github.com/aws-powertools/powertools-lambda-python/issues/7587))
2535
* **deps-dev:** bump cfn-lint from 1.40.2 to 1.40.3 ([#7585](https://github.com/aws-powertools/powertools-lambda-python/issues/7585))
2636
* **deps-dev:** bump boto3-stubs from 1.40.60 to 1.40.61 ([#7590](https://github.com/aws-powertools/powertools-lambda-python/issues/7590))
37+
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.221.0a0 to 2.221.1a0 ([#7593](https://github.com/aws-powertools/powertools-lambda-python/issues/7593))
38+
* **deps-dev:** bump ruff from 0.14.1 to 0.14.2 ([#7575](https://github.com/aws-powertools/powertools-lambda-python/issues/7575))
2739
* **deps-dev:** bump boto3-stubs from 1.40.55 to 1.40.59 ([#7579](https://github.com/aws-powertools/powertools-lambda-python/issues/7579))
40+
* **deps-dev:** bump sentry-sdk from 2.42.1 to 2.43.0 ([#7594](https://github.com/aws-powertools/powertools-lambda-python/issues/7594))
41+
* **deps-dev:** bump aws-cdk-aws-lambda-python-alpha from 2.220.0a0 to 2.221.0a0 ([#7580](https://github.com/aws-powertools/powertools-lambda-python/issues/7580))
42+
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.311 to 0.1.312 ([#7605](https://github.com/aws-powertools/powertools-lambda-python/issues/7605))
43+
* **deps-dev:** bump aws-cdk from 2.1031.0 to 2.1031.1 ([#7601](https://github.com/aws-powertools/powertools-lambda-python/issues/7601))
44+
* **deps-dev:** bump pytest-benchmark from 5.1.0 to 5.2.0 ([#7606](https://github.com/aws-powertools/powertools-lambda-python/issues/7606))
45+
* **deps-dev:** bump boto3-stubs from 1.40.61 to 1.40.64 ([#7611](https://github.com/aws-powertools/powertools-lambda-python/issues/7611))
46+
* **deps-dev:** bump ruff from 0.14.2 to 0.14.3 ([#7610](https://github.com/aws-powertools/powertools-lambda-python/issues/7610))
47+
* **deps-dev:** bump hvac from 2.3.0 to 2.4.0 ([#7602](https://github.com/aws-powertools/powertools-lambda-python/issues/7602))
48+
* **deps-dev:** bump aws-cdk from 2.1030.0 to 2.1031.0 ([#7569](https://github.com/aws-powertools/powertools-lambda-python/issues/7569))
49+
* **event_handler:** fix typos in api_gateway.py file ([#7619](https://github.com/aws-powertools/powertools-lambda-python/issues/7619))
2850

2951

3052
<a name="v3.22.0"></a>

aws_lambda_powertools/event_handler/api_gateway.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ def _build_middleware_stack(self, router_middlewares: list[Callable[..., Any]],
498498
to force the Python call stack created by the handler call-chain to naturally un-wind.
499499
500500
This becomes a simple concept for developers to understand and reason with - no additional
501-
gymanstics other than plain old try ... except.
501+
gymnastics other than plain old try ... except.
502502
503503
Notes
504504
-----
@@ -1650,7 +1650,7 @@ def _registered_api_adapter(
16501650

16511651

16521652
class ApiGatewayResolver(BaseRouter):
1653-
"""API Gateway, VPC Laticce, Bedrock and ALB proxy resolver
1653+
"""API Gateway, VPC Lattice, Bedrock and ALB proxy resolver
16541654
16551655
Examples
16561656
--------
@@ -2886,7 +2886,7 @@ def _get_fields_from_routes(routes: Sequence[Route]) -> list[ModelField]:
28862886
for route in routes:
28872887
if route.body_field:
28882888
if not isinstance(route.body_field, ModelField):
2889-
raise AssertionError("A request body myst be a Pydantic Field")
2889+
raise AssertionError("A request body must be a Pydantic Field")
28902890
body_fields_from_routes.append(route.body_field)
28912891

28922892
params = get_flat_params(route.dependant)

aws_lambda_powertools/event_handler/openapi/compat.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# We use this for forward reference, as it allows us to handle forward references in type annotations.
1515
from pydantic._internal._typing_extra import eval_type_lenient
1616
from pydantic._internal._utils import lenient_issubclass
17+
from pydantic.fields import FieldInfo as PydanticFieldInfo
1718
from pydantic_core import PydanticUndefined, PydanticUndefinedType
1819
from typing_extensions import Annotated, Literal, get_args, get_origin
1920

@@ -186,8 +187,36 @@ def model_rebuild(model: type[BaseModel]) -> None:
186187
def copy_field_info(*, field_info: FieldInfo, annotation: Any) -> FieldInfo:
187188
# Create a shallow copy of the field_info to preserve its type and all attributes
188189
new_field = copy(field_info)
189-
# Update only the annotation to the new one
190-
new_field.annotation = annotation
190+
191+
# Recursively extract all metadata from nested Annotated types
192+
def extract_metadata(ann: Any) -> tuple[Any, list[Any]]:
193+
"""Extract base type and all non-FieldInfo metadata from potentially nested Annotated types."""
194+
if get_origin(ann) is not Annotated:
195+
return ann, []
196+
197+
args = get_args(ann)
198+
base_type = args[0]
199+
metadata = list(args[1:])
200+
201+
# If base type is also Annotated, recursively extract its metadata
202+
if get_origin(base_type) is Annotated:
203+
inner_base, inner_metadata = extract_metadata(base_type)
204+
all_metadata = [m for m in inner_metadata + metadata if not isinstance(m, PydanticFieldInfo)]
205+
return inner_base, all_metadata
206+
else:
207+
constraint_metadata = [m for m in metadata if not isinstance(m, PydanticFieldInfo)]
208+
return base_type, constraint_metadata
209+
210+
# Extract base type and constraints
211+
base_type, constraints = extract_metadata(annotation)
212+
213+
# Set the annotation with base type and all constraint metadata
214+
# Use tuple unpacking for Python 3.9+ compatibility
215+
if constraints:
216+
new_field.annotation = Annotated[(base_type, *constraints)]
217+
else:
218+
new_field.annotation = base_type
219+
191220
return new_field
192221

193222

aws_lambda_powertools/event_handler/openapi/params.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,10 @@ def get_field_info_annotated_type(annotation, value, is_path_param: bool) -> tup
11101110
type_annotation = annotated_args[0]
11111111
powertools_annotations = [arg for arg in annotated_args[1:] if isinstance(arg, FieldInfo)]
11121112

1113+
# Preserve non-FieldInfo metadata (like annotated_types constraints)
1114+
# This is important for constraints like Interval, Gt, Lt, etc.
1115+
other_metadata = [arg for arg in annotated_args[1:] if not isinstance(arg, FieldInfo)]
1116+
11131117
# Determine which annotation to use
11141118
powertools_annotation: FieldInfo | None = None
11151119
has_discriminator_with_param = False
@@ -1124,6 +1128,11 @@ def get_field_info_annotated_type(annotation, value, is_path_param: bool) -> tup
11241128
else:
11251129
powertools_annotation = next(iter(powertools_annotations), None)
11261130

1131+
# Reconstruct type_annotation with non-FieldInfo metadata if present
1132+
# This ensures constraints like Interval are preserved
1133+
if other_metadata and not has_discriminator_with_param:
1134+
type_annotation = Annotated[(type_annotation, *other_metadata)]
1135+
11271136
# Process the annotation if it exists
11281137
field_info: FieldInfo | None = None
11291138
if isinstance(powertools_annotation, FieldInfo): # pragma: no cover
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Exposes version constant to avoid circular dependencies."""
22

3-
VERSION = "3.22.1a4"
3+
VERSION = "3.22.1a7"

docs/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# v9.1.18
2-
FROM squidfunk/mkdocs-material@sha256:f5c556a6d30ce0c1c0df10e3c38c79bbcafdaea4b1c1be366809d0d4f6f9d57f
2+
FROM squidfunk/mkdocs-material@sha256:58dee36ad85b0ae4836522ee6d3f0150d828bca9a1f7d3bfbf430bca771c1441
33
# pip-compile --generate-hashes --output-file=requirements.txt requirements.in
44
COPY requirements.txt /tmp/
55
RUN pip install --require-hashes -r /tmp/requirements.txt

docs/core/tracer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Tracer is an opinionated thin wrapper for [AWS X-Ray Python SDK](https://github.
1919
???+ tip
2020
All examples shared in this documentation are available within the [project repository](https://github.com/aws-powertools/powertools-lambda-python/tree/develop/examples){target="_blank"}.
2121

22-
!!! note "Tracer relies on AWS X-Ray SDK over [OpenTelememetry Distro (ADOT)](https://aws-otel.github.io/docs/getting-started/lambda){target="_blank" rel="nofollow"} for optimal cold start (lower latency)."
22+
!!! note "Tracer relies on AWS X-Ray SDK over [OpenTelemetry Distro (ADOT)](https://aws-otel.github.io/docs/getting-started/lambda){target="_blank" rel="nofollow"} for optimal cold start (lower latency)."
2323

2424
### Install
2525

docs/requirements.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
mkdocs-git-revision-date-plugin==0.3.2
22
mkdocstrings-python==1.18.2
33
mkdocs-llmstxt==0.4.0
4-
mkdocs-material==9.6.22
4+
mkdocs-material==9.6.23

docs/requirements.txt

Lines changed: 67 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,15 @@ idna==3.10 \
151151
--hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \
152152
--hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3
153153
# via requests
154+
importlib-metadata==8.7.0 \
155+
--hash=sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000 \
156+
--hash=sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd
157+
# via
158+
# markdown
159+
# mdformat
160+
# mkdocs
161+
# mkdocs-get-deps
162+
# mkdocstrings
154163
jinja2==3.1.6 \
155164
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
156165
--hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
@@ -283,15 +292,15 @@ mkdocs-get-deps==0.2.0 \
283292
# via mkdocs
284293
mkdocs-git-revision-date-plugin==0.3.2 \
285294
--hash=sha256:2e67956cb01823dd2418e2833f3623dee8604cdf223bddd005fe36226a56f6ef
286-
# via -r requirements.in
295+
# via -r docs/requirements.in
287296
mkdocs-llmstxt==0.4.0 \
288297
--hash=sha256:7244bf0ac917c9964030c93e9c3e26c02d2d14a0f66fc113416007125b6da0fc \
289298
--hash=sha256:a7e4d20496bc8c55b6773b55c8d69cf552448a9ad38915b6e8c657ae3a46c8b8
290-
# via -r requirements.in
291-
mkdocs-material==9.6.22 \
292-
--hash=sha256:14ac5f72d38898b2f98ac75a5531aaca9366eaa427b0f49fc2ecf04d99b7ad84 \
293-
--hash=sha256:87c158b0642e1ada6da0cbd798a3389b0bc5516b90e5ece4a0fb939f00bacd1c
294-
# via -r requirements.in
299+
# via -r docs/requirements.in
300+
mkdocs-material==9.6.23 \
301+
--hash=sha256:3bf3f1d82d269f3a14ed6897bfc3a844cc05e1dc38045386691b91d7e6945332 \
302+
--hash=sha256:62ebc9cdbe90e1ae4f4e9b16a6aa5c69b93474c7b9e79ebc0b11b87f9f055e00
303+
# via -r docs/requirements.in
295304
mkdocs-material-extensions==1.3.1 \
296305
--hash=sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443 \
297306
--hash=sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31
@@ -303,7 +312,7 @@ mkdocstrings==0.30.0 \
303312
mkdocstrings-python==1.18.2 \
304313
--hash=sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323 \
305314
--hash=sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d
306-
# via -r requirements.in
315+
# via -r docs/requirements.in
307316
packaging==25.0 \
308317
--hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \
309318
--hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f
@@ -415,10 +424,56 @@ soupsieve==2.7 \
415424
--hash=sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4 \
416425
--hash=sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a
417426
# via beautifulsoup4
427+
tomli==2.3.0 \
428+
--hash=sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456 \
429+
--hash=sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845 \
430+
--hash=sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999 \
431+
--hash=sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0 \
432+
--hash=sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878 \
433+
--hash=sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf \
434+
--hash=sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3 \
435+
--hash=sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be \
436+
--hash=sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52 \
437+
--hash=sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b \
438+
--hash=sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67 \
439+
--hash=sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549 \
440+
--hash=sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba \
441+
--hash=sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22 \
442+
--hash=sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c \
443+
--hash=sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f \
444+
--hash=sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6 \
445+
--hash=sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba \
446+
--hash=sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45 \
447+
--hash=sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f \
448+
--hash=sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77 \
449+
--hash=sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606 \
450+
--hash=sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441 \
451+
--hash=sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0 \
452+
--hash=sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f \
453+
--hash=sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530 \
454+
--hash=sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05 \
455+
--hash=sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8 \
456+
--hash=sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005 \
457+
--hash=sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879 \
458+
--hash=sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae \
459+
--hash=sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc \
460+
--hash=sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b \
461+
--hash=sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b \
462+
--hash=sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e \
463+
--hash=sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf \
464+
--hash=sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac \
465+
--hash=sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8 \
466+
--hash=sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b \
467+
--hash=sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf \
468+
--hash=sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463 \
469+
--hash=sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876
470+
# via mdformat
418471
typing-extensions==4.14.0 \
419472
--hash=sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4 \
420473
--hash=sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af
421-
# via beautifulsoup4
474+
# via
475+
# beautifulsoup4
476+
# mkdocstrings-python
422477
urllib3==2.5.0 \
423478
--hash=sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760 \
424479
--hash=sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc
@@ -459,3 +514,7 @@ wcwidth==0.2.13 \
459514
--hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \
460515
--hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5
461516
# via mdformat-tables
517+
zipp==3.23.0 \
518+
--hash=sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e \
519+
--hash=sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166
520+
# via importlib-metadata

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)