awslabs.lambda-tool-mcp-server 2.0.13__tar.gz → 2.0.14__tar.gz

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.
Files changed (33) hide show
  1. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/Dockerfile +19 -22
  2. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/PKG-INFO +1 -1
  3. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/awslabs/lambda_tool_mcp_server/__init__.py +1 -1
  4. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/docker-healthcheck.sh +1 -1
  5. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/pyproject.toml +6 -1
  6. awslabs_lambda_tool_mcp_server-2.0.14/uv-requirements.txt +23 -0
  7. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/uv.lock +45 -19
  8. awslabs_lambda_tool_mcp_server-2.0.13/uv-requirements.txt +0 -27
  9. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/.gitignore +0 -0
  10. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/.python-version +0 -0
  11. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/CHANGELOG.md +0 -0
  12. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/LICENSE +0 -0
  13. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/NOTICE +0 -0
  14. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/README.md +0 -0
  15. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/awslabs/__init__.py +0 -0
  16. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/awslabs/lambda_tool_mcp_server/server.py +0 -0
  17. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/examples/README.md +0 -0
  18. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/examples/sample_functions/customer-create/app.py +0 -0
  19. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/examples/sample_functions/customer-id-from-email/app.py +0 -0
  20. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/examples/sample_functions/customer-info-from-id/app.py +0 -0
  21. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/examples/sample_functions/template.yml +0 -0
  22. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/.gitignore +0 -0
  23. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/README.md +0 -0
  24. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/__init__.py +0 -0
  25. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/conftest.py +0 -0
  26. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_format_lambda_response.py +0 -0
  27. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_integration.py +0 -0
  28. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_integration_coverage.py +0 -0
  29. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_register_lambda_functions.py +0 -0
  30. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_schema_integration.py +0 -0
  31. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_server.py +0 -0
  32. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_server_coverage.py +0 -0
  33. {awslabs_lambda_tool_mcp_server-2.0.13 → awslabs_lambda_tool_mcp_server-2.0.14}/tests/test_server_coverage_additional.py +0 -0
@@ -13,7 +13,11 @@
13
13
  # limitations under the License.
14
14
 
15
15
  # dependabot should continue to update this to the latest hash.
16
- FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:e7e041128ffc3e3600509f508e44d34ab08ff432bdb62ec508d01dfc5ca459f7 AS uv
16
+ FROM public.ecr.aws/amazonlinux/amazonlinux@sha256:e27a70c006c68f0d194cc9b9624714d6ed8d979a94f60f7d31392f4c8294155b AS uv
17
+
18
+ # Install build dependencies needed for compiling packages
19
+ RUN dnf install -y shadow-utils python3 python3-devel gcc && \
20
+ dnf clean all
17
21
 
18
22
  # Install the project into `/app`
19
23
  WORKDIR /app
@@ -25,7 +29,7 @@ ENV UV_COMPILE_BYTECODE=1
25
29
  ENV UV_LINK_MODE=copy
26
30
 
27
31
  # Prefer the system python
28
- ENV UV_PYTHON_PREFERENCE=only-system
32
+ ENV UV_PYTHON_PREFERENCE=only-managed
29
33
 
30
34
  # Run without updating the uv.lock file like running with `--frozen`
31
35
  ENV UV_FROZEN=true
@@ -37,19 +41,10 @@ COPY pyproject.toml uv.lock uv-requirements.txt ./
37
41
  ENV PIP_NO_CACHE_DIR=1 \
38
42
  PIP_DISABLE_PIP_VERSION_CHECK=1
39
43
 
40
- # Install system dependencies and Python package manager
41
- RUN apk update && \
42
- apk add --no-cache --virtual .build-deps \
43
- build-base \
44
- gcc \
45
- musl-dev \
46
- libffi-dev \
47
- openssl-dev \
48
- cargo
49
-
50
44
  # Install the project's dependencies using the lockfile and settings
51
45
  RUN --mount=type=cache,target=/root/.cache/uv \
52
- pip install --require-hashes --requirement uv-requirements.txt --no-cache-dir && \
46
+ python3 -m ensurepip && \
47
+ python3 -m pip install --require-hashes --requirement uv-requirements.txt --no-cache-dir && \
53
48
  uv sync --python 3.13 --frozen --no-install-project --no-dev --no-editable
54
49
 
55
50
  # Then, add the rest of the project source code and install it
@@ -61,20 +56,22 @@ RUN --mount=type=cache,target=/root/.cache/uv \
61
56
  # Make the directory just in case it doesn't exist
62
57
  RUN mkdir -p /root/.local
63
58
 
64
- FROM public.ecr.aws/docker/library/python:3.13-alpine@sha256:e7e041128ffc3e3600509f508e44d34ab08ff432bdb62ec508d01dfc5ca459f7
59
+ FROM public.ecr.aws/amazonlinux/amazonlinux@sha256:e27a70c006c68f0d194cc9b9624714d6ed8d979a94f60f7d31392f4c8294155b
65
60
 
66
61
  # Place executables in the environment at the front of the path and include other binaries
67
- ENV PATH="/app/.venv/bin:$PATH" \
62
+ ENV PATH="/app/.venv/bin:$PATH:/usr/sbin" \
68
63
  PYTHONUNBUFFERED=1
69
64
 
70
- # Install runtime dependencies and create application user
71
- RUN apk update && \
72
- apk add --no-cache ca-certificates && \
73
- update-ca-certificates && \
74
- addgroup -S app && \
75
- adduser -S app -G app -h /app
65
+ # Install other tools as needed for the MCP server
66
+ # Add non-root user and ability to change directory into /root
67
+ RUN dnf install -y shadow-utils procps && \
68
+ dnf clean all && \
69
+ groupadd --force --system app && \
70
+ useradd app -g app -d /app && \
71
+ chmod o+x /root
76
72
 
77
- # Copy application artifacts from build stage
73
+ # Get the project from the uv layer
74
+ COPY --from=uv --chown=app:app /root/.local /root/.local
78
75
  COPY --from=uv --chown=app:app /app/.venv /app/.venv
79
76
 
80
77
  # Get healthcheck script
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.lambda-tool-mcp-server
3
- Version: 2.0.13
3
+ Version: 2.0.14
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for AWS Lambda Tools
5
5
  Project-URL: Homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: Documentation, https://awslabs.github.io/mcp/servers/lambda-tool-mcp-server/
@@ -14,4 +14,4 @@
14
14
 
15
15
  """awslabs.lambda-tool-mcp-server"""
16
16
 
17
- __version__ = '2.0.13'
17
+ __version__ = '2.0.14'
@@ -16,7 +16,7 @@
16
16
  SERVER="lambda-tool-mcp-server"
17
17
 
18
18
  # Check if the server process is running
19
- if pgrep -P 0 -a -l -x -f "/app/.venv/bin/python3 /app/.venv/bin/awslabs.$SERVER" > /dev/null; then
19
+ if pgrep -P 0 -a -l -x -f "/app/.venv/bin/python3? /app/.venv/bin/awslabs.$SERVER" > /dev/null; then
20
20
  echo -n "$SERVER is running";
21
21
  exit 0;
22
22
  fi;
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "awslabs.lambda-tool-mcp-server"
3
- version = "2.0.13"
3
+ version = "2.0.14"
4
4
  description = "An AWS Labs Model Context Protocol (MCP) server for AWS Lambda Tools"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -27,6 +27,11 @@ classifiers = [
27
27
  "Programming Language :: Python :: 3.13",
28
28
  ]
29
29
 
30
+ [tool.uv]
31
+ override-dependencies = [
32
+ "virtualenv>=20.36.1", # Temporary forced a higher version because 20.33.1 from CVE-2026-22702
33
+ ]
34
+
30
35
  [project.scripts]
31
36
  "awslabs.lambda-tool-mcp-server" = "awslabs.lambda_tool_mcp_server.server:main"
32
37
 
@@ -0,0 +1,23 @@
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv pip compile --generate-hashes --output-file=uv-requirements.txt --strip-extras uv-requirements.in
3
+ uv==0.9.24 \
4
+ --hash=sha256:009cc82cdfc48add6ec13a0c4ffbb788ae2cab53573b4218069ca626721a404b \
5
+ --hash=sha256:15d3955bfb03a7b78aaf5afb639cedefdf0fc35ff844c92e3fe6e8700b94b84f \
6
+ --hash=sha256:1914d33e526167dc202ec4a59119c68467b31f7c71dcf8b1077571d091ca3e7c \
7
+ --hash=sha256:207c8a2d4c4d55589feb63b4be74f6ff6ab92fa81b14a6515007ccec5a868ae0 \
8
+ --hash=sha256:38c59e18fe5fa42f7baeb4f08c94914cee6d87ff8faa6fc95c994dbc0de26c90 \
9
+ --hash=sha256:3b610d89d6025000d08cd9bd458c6e264003a0ecfdaa8e4eba28938130cd1837 \
10
+ --hash=sha256:44c0b8a78724e4cfa8e9c0266023c70fc792d0b39a5da17f5f847af2b530796b \
11
+ --hash=sha256:488a07e59fb417bf86de5630197223b7a0223229e626afc124c26827db78cff8 \
12
+ --hash=sha256:63a0a46693098cf8446e41bd5d9ce7d3bc9b775a63fe0c8405ab6ee328424d46 \
13
+ --hash=sha256:6720c9939cca7daff3cccc35dd896bbe139d7d463c62cba8dbbc474ff8eb93d1 \
14
+ --hash=sha256:68a3186074c03876ee06b68730d5ff69a430296760d917ebbbb8e3fb54fb4091 \
15
+ --hash=sha256:69531d9a8772afb2dff68fef2469f666e4f8a0132b2109e36541c423415835da \
16
+ --hash=sha256:75a000f529ec92235b10fb5e16ca41f23f46c643308fd6c5b0d7b73ca056c5b9 \
17
+ --hash=sha256:841ede01d6dcf1676a21dce05f3647ba171c1d92768a03e8b8b6b7354b34a6d2 \
18
+ --hash=sha256:8cd626306b415491f839b1a9100da6795c82c44d4cf278dd7ace7a774af89df4 \
19
+ --hash=sha256:8d3c0fec7aa17f936a5b258816e856647b21f978a81bcfb2dc8caf2892a4965e \
20
+ --hash=sha256:aafe7dd9b633672054cf27f1a8e4127506324631f1af5edd051728f4f8085351 \
21
+ --hash=sha256:d59d31c25fc530c68db9164174efac511a25fc882cec49cd48f75a18e7ebd6d5 \
22
+ --hash=sha256:d7d1333d9c21088c89cb284ef29fdf48dc2015fe993174a823a3e7c991db90f9
23
+ # via -r uv-requirements.in (contents of `uv==0.9.24`)
@@ -7,6 +7,9 @@ resolution-markers = [
7
7
  "platform_python_implementation == 'PyPy'",
8
8
  ]
9
9
 
10
+ [manifest]
11
+ overrides = [{ name = "virtualenv", specifier = ">=20.36.1" }]
12
+
10
13
  [[package]]
11
14
  name = "annotated-types"
12
15
  version = "0.7.0"
@@ -24,7 +27,7 @@ dependencies = [
24
27
  { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
25
28
  { name = "idna" },
26
29
  { name = "sniffio" },
27
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
30
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" },
28
31
  ]
29
32
  sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" }
30
33
  wheels = [
@@ -51,7 +54,7 @@ wheels = [
51
54
 
52
55
  [[package]]
53
56
  name = "awslabs-lambda-tool-mcp-server"
54
- version = "2.0.13"
57
+ version = "2.0.14"
55
58
  source = { editable = "." }
56
59
  dependencies = [
57
60
  { name = "boto3" },
@@ -315,7 +318,7 @@ dependencies = [
315
318
  { name = "questionary" },
316
319
  { name = "termcolor" },
317
320
  { name = "tomlkit" },
318
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
321
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
319
322
  ]
320
323
  sdist = { url = "https://files.pythonhosted.org/packages/b5/fd/cd449bed87a26ecb61c950410e2d94e97ac31bf1f3ec69cc718b215384ce/commitizen-4.4.1.tar.gz", hash = "sha256:626d9f545fb9b2db42305e16ef35d6348a35081a80527bad863a05a7ba0bec21", size = 52345, upload-time = "2025-03-02T16:29:21.977Z" }
321
324
  wheels = [
@@ -534,11 +537,11 @@ wheels = [
534
537
 
535
538
  [[package]]
536
539
  name = "filelock"
537
- version = "3.20.1"
540
+ version = "3.20.3"
538
541
  source = { registry = "https://pypi.org/simple" }
539
- sdist = { url = "https://files.pythonhosted.org/packages/a7/23/ce7a1126827cedeb958fc043d61745754464eb56c5937c35bbf2b8e26f34/filelock-3.20.1.tar.gz", hash = "sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c", size = 19476, upload-time = "2025-12-15T23:54:28.027Z" }
542
+ sdist = { url = "https://files.pythonhosted.org/packages/1d/65/ce7f1b70157833bf3cb851b556a37d4547ceafc158aa9b34b36782f23696/filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1", size = 19485, upload-time = "2026-01-09T17:55:05.421Z" }
540
543
  wheels = [
541
- { url = "https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl", hash = "sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a", size = 16666, upload-time = "2025-12-15T23:54:26.874Z" },
544
+ { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" },
542
545
  ]
543
546
 
544
547
  [[package]]
@@ -748,7 +751,8 @@ dependencies = [
748
751
  { name = "pywin32", marker = "sys_platform == 'win32'" },
749
752
  { name = "sse-starlette" },
750
753
  { name = "starlette" },
751
- { name = "typing-extensions" },
754
+ { name = "typing-extensions", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
755
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
752
756
  { name = "typing-inspection" },
753
757
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
754
758
  ]
@@ -852,7 +856,8 @@ source = { registry = "https://pypi.org/simple" }
852
856
  dependencies = [
853
857
  { name = "annotated-types" },
854
858
  { name = "pydantic-core" },
855
- { name = "typing-extensions" },
859
+ { name = "typing-extensions", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
860
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
856
861
  { name = "typing-inspection" },
857
862
  ]
858
863
  sdist = { url = "https://files.pythonhosted.org/packages/77/ab/5250d56ad03884ab5efd07f734203943c8a8ab40d551e208af81d0257bf2/pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d", size = 786540, upload-time = "2025-04-29T20:38:55.02Z" }
@@ -865,7 +870,8 @@ name = "pydantic-core"
865
870
  version = "2.33.2"
866
871
  source = { registry = "https://pypi.org/simple" }
867
872
  dependencies = [
868
- { name = "typing-extensions" },
873
+ { name = "typing-extensions", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
874
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
869
875
  ]
870
876
  sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" }
871
877
  wheels = [
@@ -990,7 +996,8 @@ version = "1.1.398"
990
996
  source = { registry = "https://pypi.org/simple" }
991
997
  dependencies = [
992
998
  { name = "nodeenv" },
993
- { name = "typing-extensions" },
999
+ { name = "typing-extensions", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
1000
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
994
1001
  ]
995
1002
  sdist = { url = "https://files.pythonhosted.org/packages/24/d6/48740f1d029e9fc4194880d1ad03dcf0ba3a8f802e0e166b8f63350b3584/pyright-1.1.398.tar.gz", hash = "sha256:357a13edd9be8082dc73be51190913e475fa41a6efb6ec0d4b7aab3bc11638d8", size = 3892675, upload-time = "2025-03-26T10:06:06.063Z" }
996
1003
  wheels = [
@@ -1166,7 +1173,7 @@ source = { registry = "https://pypi.org/simple" }
1166
1173
  dependencies = [
1167
1174
  { name = "attrs" },
1168
1175
  { name = "rpds-py" },
1169
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1176
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" },
1170
1177
  ]
1171
1178
  sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" }
1172
1179
  wheels = [
@@ -1180,7 +1187,7 @@ source = { registry = "https://pypi.org/simple" }
1180
1187
  dependencies = [
1181
1188
  { name = "markdown-it-py" },
1182
1189
  { name = "pygments" },
1183
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1190
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1184
1191
  ]
1185
1192
  sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload-time = "2025-03-30T14:15:14.23Z" }
1186
1193
  wheels = [
@@ -1396,7 +1403,7 @@ version = "0.50.0"
1396
1403
  source = { registry = "https://pypi.org/simple" }
1397
1404
  dependencies = [
1398
1405
  { name = "anyio" },
1399
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1406
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" },
1400
1407
  ]
1401
1408
  sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" }
1402
1409
  wheels = [
@@ -1468,7 +1475,8 @@ dependencies = [
1468
1475
  { name = "click" },
1469
1476
  { name = "rich" },
1470
1477
  { name = "shellingham" },
1471
- { name = "typing-extensions" },
1478
+ { name = "typing-extensions", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
1479
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
1472
1480
  ]
1473
1481
  sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload-time = "2025-05-26T14:30:31.824Z" }
1474
1482
  wheels = [
@@ -1479,17 +1487,34 @@ wheels = [
1479
1487
  name = "typing-extensions"
1480
1488
  version = "4.13.1"
1481
1489
  source = { registry = "https://pypi.org/simple" }
1490
+ resolution-markers = [
1491
+ "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'",
1492
+ ]
1482
1493
  sdist = { url = "https://files.pythonhosted.org/packages/76/ad/cd3e3465232ec2416ae9b983f27b9e94dc8171d56ac99b345319a9475967/typing_extensions-4.13.1.tar.gz", hash = "sha256:98795af00fb9640edec5b8e31fc647597b4691f099ad75f469a2616be1a76dff", size = 106633, upload-time = "2025-04-03T16:11:20.955Z" }
1483
1494
  wheels = [
1484
1495
  { url = "https://files.pythonhosted.org/packages/df/c5/e7a0b0f5ed69f94c8ab7379c599e6036886bffcde609969a5325f47f1332/typing_extensions-4.13.1-py3-none-any.whl", hash = "sha256:4b6cf02909eb5495cfbc3f6e8fd49217e6cc7944e145cdda8caa3734777f9e69", size = 45739, upload-time = "2025-04-03T16:11:19.281Z" },
1485
1496
  ]
1486
1497
 
1498
+ [[package]]
1499
+ name = "typing-extensions"
1500
+ version = "4.15.0"
1501
+ source = { registry = "https://pypi.org/simple" }
1502
+ resolution-markers = [
1503
+ "python_full_version < '3.14' and platform_python_implementation != 'PyPy'",
1504
+ "platform_python_implementation == 'PyPy'",
1505
+ ]
1506
+ sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
1507
+ wheels = [
1508
+ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
1509
+ ]
1510
+
1487
1511
  [[package]]
1488
1512
  name = "typing-inspection"
1489
1513
  version = "0.4.2"
1490
1514
  source = { registry = "https://pypi.org/simple" }
1491
1515
  dependencies = [
1492
- { name = "typing-extensions" },
1516
+ { name = "typing-extensions", version = "4.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
1517
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
1493
1518
  ]
1494
1519
  sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" }
1495
1520
  wheels = [
@@ -1512,7 +1537,7 @@ source = { registry = "https://pypi.org/simple" }
1512
1537
  dependencies = [
1513
1538
  { name = "click" },
1514
1539
  { name = "h11" },
1515
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1540
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1516
1541
  ]
1517
1542
  sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568, upload-time = "2024-12-15T13:33:30.42Z" }
1518
1543
  wheels = [
@@ -1521,16 +1546,17 @@ wheels = [
1521
1546
 
1522
1547
  [[package]]
1523
1548
  name = "virtualenv"
1524
- version = "20.30.0"
1549
+ version = "20.36.1"
1525
1550
  source = { registry = "https://pypi.org/simple" }
1526
1551
  dependencies = [
1527
1552
  { name = "distlib" },
1528
1553
  { name = "filelock" },
1529
1554
  { name = "platformdirs" },
1555
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1530
1556
  ]
1531
- sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945, upload-time = "2025-03-31T16:33:29.185Z" }
1557
+ sdist = { url = "https://files.pythonhosted.org/packages/aa/a3/4d310fa5f00863544e1d0f4de93bddec248499ccf97d4791bc3122c9d4f3/virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba", size = 6032239, upload-time = "2026-01-09T18:21:01.296Z" }
1532
1558
  wheels = [
1533
- { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461, upload-time = "2025-03-31T16:33:26.758Z" },
1559
+ { url = "https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f", size = 6008258, upload-time = "2026-01-09T18:20:59.425Z" },
1534
1560
  ]
1535
1561
 
1536
1562
  [[package]]
@@ -1,27 +0,0 @@
1
- #
2
- # This file is autogenerated by pip-compile with Python 3.12
3
- # by the following command:
4
- #
5
- # pip-compile --generate-hashes --output-file=uv-requirements.txt --strip-extras uv-requirements.in
6
- #
7
- uv==0.9.6 \
8
- --hash=sha256:0169a85d3ba5ef1c37089d64ff26de573439ca84ecf549276a2eee42d7f833f2 \
9
- --hash=sha256:0fde18c22376c8b02954c7db3847bc75ac42619932c44b43f49d056e5cfb05f9 \
10
- --hash=sha256:166175ba952d2ad727e1dbd57d7cfc1782dfe7b8d79972174a46a7aa33ddceec \
11
- --hash=sha256:3c2c2b2b093330e603d838fec26941ab6f62e8d62a012f9fa0d5ed88da39d907 \
12
- --hash=sha256:538716ec97f8d899baa7e1c427f4411525459c0ef72ea9b3625ce9610c9976e6 \
13
- --hash=sha256:547fd27ab5da7cd1a833288a36858852451d416a056825f162ecf2af5be6f8b8 \
14
- --hash=sha256:62e3f057a9ae5e5003a7cd56b617e940f519f6dabcbb22d36cdd0149df25d409 \
15
- --hash=sha256:6403176b55388cf94fb8737e73b26ee2a7b1805a9139da5afa951210986d4fcd \
16
- --hash=sha256:7e89c964f614fa3f0481060cac709d6da50feac553e1e11227d6c4c81c87af7c \
17
- --hash=sha256:86e05782f9b75d39ab1c0af98bf11e87e646a36a61d425021d5b284073e56315 \
18
- --hash=sha256:90122a76e6441b8c580fc9faf06bd8c4dbe276cb1c185ad91eceb2afa78e492a \
19
- --hash=sha256:95a62c1f668272555ad0c446bf44a9924dee06054b831d04c162e0bad736dc28 \
20
- --hash=sha256:a7c6067919d87208c4a6092033c3bc9799cb8be1c8bc6ef419a1f6d42a755329 \
21
- --hash=sha256:b2f934737c93f88c906b6a47bcc083170210fe5d66565e80a7c139599e5cbf2f \
22
- --hash=sha256:b31377ebf2d0499afc5abe3fe1abded5ca843f3a1161b432fe26eb0ce15bab8e \
23
- --hash=sha256:d1072db92cc9525febdf9d113c23916dfc20ca03e21218cc7beefe7185a90631 \
24
- --hash=sha256:e700b2098f9d365061c572d0729b4e8bc71c6468d83dfaae2537cd66e3cb1b98 \
25
- --hash=sha256:ea67369918af24ea7e01991dfc8b8988d1b0b7c49cb39d9e5bc0c409930a0a3f \
26
- --hash=sha256:f0ba311b3ca49d246f36d444d3ee81571619ef95e5f509eb694a81defcbed262
27
- # via -r uv-requirements.in (contents of `uv==0.9.6`)