awslabs.nova-canvas-mcp-server 1.0.11__tar.gz → 1.0.12__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 (26) hide show
  1. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/Dockerfile +19 -22
  2. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/PKG-INFO +1 -1
  3. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/awslabs/nova_canvas_mcp_server/__init__.py +1 -1
  4. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/docker-healthcheck.sh +1 -1
  5. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/pyproject.toml +6 -1
  6. awslabs_nova_canvas_mcp_server-1.0.12/uv-requirements.txt +23 -0
  7. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/uv.lock +47 -21
  8. awslabs_nova_canvas_mcp_server-1.0.11/uv-requirements.txt +0 -27
  9. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/.gitignore +0 -0
  10. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/.python-version +0 -0
  11. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/CHANGELOG.md +0 -0
  12. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/LICENSE +0 -0
  13. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/NOTICE +0 -0
  14. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/README.md +0 -0
  15. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/awslabs/__init__.py +0 -0
  16. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/awslabs/nova_canvas_mcp_server/consts.py +0 -0
  17. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/awslabs/nova_canvas_mcp_server/models.py +0 -0
  18. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/awslabs/nova_canvas_mcp_server/novacanvas.py +0 -0
  19. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/awslabs/nova_canvas_mcp_server/server.py +0 -0
  20. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/.gitignore +0 -0
  21. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/README.md +0 -0
  22. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/__init__.py +0 -0
  23. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/conftest.py +0 -0
  24. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/test_models.py +0 -0
  25. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/test_novacanvas.py +0 -0
  26. {awslabs_nova_canvas_mcp_server-1.0.11 → awslabs_nova_canvas_mcp_server-1.0.12}/tests/test_server.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.nova-canvas-mcp-server
3
- Version: 1.0.11
3
+ Version: 1.0.12
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for Amazon Nova Canvas
5
5
  Project-URL: Homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: Documentation, https://awslabs.github.io/mcp/servers/nova-mcp-server/
@@ -13,4 +13,4 @@
13
13
  # limitations under the License.
14
14
  """awslabs.nova-canvas-mcp-server"""
15
15
 
16
- __version__ = '1.0.11'
16
+ __version__ = '1.0.12'
@@ -16,7 +16,7 @@
16
16
  SERVER="nova-canvas-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.nova-canvas-mcp-server"
3
- version = "1.0.11"
3
+ version = "1.0.12"
4
4
  description = "An AWS Labs Model Context Protocol (MCP) server for Amazon Nova Canvas"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -32,6 +32,11 @@ classifiers = [
32
32
  "Programming Language :: Python :: 3.13",
33
33
  ]
34
34
 
35
+ [tool.uv]
36
+ override-dependencies = [
37
+ "virtualenv>=20.36.1", # Temporary forced a higher version because 20.33.1 from CVE-2026-22702
38
+ ]
39
+
35
40
  [project.scripts]
36
41
  "awslabs.nova-canvas-mcp-server" = "awslabs.nova_canvas_mcp_server.server:main"
37
42
 
@@ -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-nova-canvas-mcp-server"
54
- version = "1.0.11"
57
+ version = "1.0.12"
55
58
  source = { editable = "." }
56
59
  dependencies = [
57
60
  { name = "boto3" },
@@ -121,7 +124,7 @@ source = { registry = "https://pypi.org/simple" }
121
124
  dependencies = [
122
125
  { name = "botocore-stubs" },
123
126
  { name = "types-s3transfer" },
124
- { name = "typing-extensions", marker = "python_full_version < '3.12'" },
127
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
125
128
  ]
126
129
  sdist = { url = "https://files.pythonhosted.org/packages/7c/ba/2cae12b5f2c4c6273d7192d94cd34a026be44f7c0cb3409023a508f80eb8/boto3_stubs-1.37.24.tar.gz", hash = "sha256:42f7c1b3da40eb074ffc830b26417c9af86546a609fd8563d7af4deade3b5194", size = 99107, upload-time = "2025-03-31T19:47:41.12Z" }
127
130
  wheels = [
@@ -356,7 +359,7 @@ dependencies = [
356
359
  { name = "questionary" },
357
360
  { name = "termcolor" },
358
361
  { name = "tomlkit" },
359
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
362
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
360
363
  ]
361
364
  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" }
362
365
  wheels = [
@@ -575,11 +578,11 @@ wheels = [
575
578
 
576
579
  [[package]]
577
580
  name = "filelock"
578
- version = "3.20.1"
581
+ version = "3.20.3"
579
582
  source = { registry = "https://pypi.org/simple" }
580
- 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" }
583
+ 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" }
581
584
  wheels = [
582
- { 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" },
585
+ { 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" },
583
586
  ]
584
587
 
585
588
  [[package]]
@@ -802,7 +805,8 @@ dependencies = [
802
805
  { name = "pywin32", marker = "sys_platform == 'win32'" },
803
806
  { name = "sse-starlette" },
804
807
  { name = "starlette" },
805
- { name = "typing-extensions" },
808
+ { name = "typing-extensions", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
809
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
806
810
  { name = "typing-inspection" },
807
811
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
808
812
  ]
@@ -831,7 +835,7 @@ name = "mypy-boto3-bedrock-runtime"
831
835
  version = "1.37.24"
832
836
  source = { registry = "https://pypi.org/simple" }
833
837
  dependencies = [
834
- { name = "typing-extensions", marker = "python_full_version < '3.12'" },
838
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
835
839
  ]
836
840
  sdist = { url = "https://files.pythonhosted.org/packages/8e/e6/96265ec6a094f02c5fdb36439e1dc4dd98801120967476fc680c5e39d36b/mypy_boto3_bedrock_runtime-1.37.24.tar.gz", hash = "sha256:36a120485eee94d9bb3a450c0ddcf912d143f49a865a7fe8012bcf7b7642510a", size = 25536, upload-time = "2025-03-31T19:42:19.743Z" }
837
841
  wheels = [
@@ -918,7 +922,8 @@ source = { registry = "https://pypi.org/simple" }
918
922
  dependencies = [
919
923
  { name = "annotated-types" },
920
924
  { name = "pydantic-core" },
921
- { name = "typing-extensions" },
925
+ { name = "typing-extensions", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
926
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
922
927
  { name = "typing-inspection" },
923
928
  ]
924
929
  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" }
@@ -931,7 +936,8 @@ name = "pydantic-core"
931
936
  version = "2.33.2"
932
937
  source = { registry = "https://pypi.org/simple" }
933
938
  dependencies = [
934
- { name = "typing-extensions" },
939
+ { name = "typing-extensions", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
940
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
935
941
  ]
936
942
  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" }
937
943
  wheels = [
@@ -1056,7 +1062,8 @@ version = "1.1.398"
1056
1062
  source = { registry = "https://pypi.org/simple" }
1057
1063
  dependencies = [
1058
1064
  { name = "nodeenv" },
1059
- { name = "typing-extensions" },
1065
+ { name = "typing-extensions", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
1066
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
1060
1067
  ]
1061
1068
  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" }
1062
1069
  wheels = [
@@ -1232,7 +1239,7 @@ source = { registry = "https://pypi.org/simple" }
1232
1239
  dependencies = [
1233
1240
  { name = "attrs" },
1234
1241
  { name = "rpds-py" },
1235
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1242
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" },
1236
1243
  ]
1237
1244
  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" }
1238
1245
  wheels = [
@@ -1246,7 +1253,7 @@ source = { registry = "https://pypi.org/simple" }
1246
1253
  dependencies = [
1247
1254
  { name = "markdown-it-py" },
1248
1255
  { name = "pygments" },
1249
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1256
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1250
1257
  ]
1251
1258
  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" }
1252
1259
  wheels = [
@@ -1462,7 +1469,7 @@ version = "0.50.0"
1462
1469
  source = { registry = "https://pypi.org/simple" }
1463
1470
  dependencies = [
1464
1471
  { name = "anyio" },
1465
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1472
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" },
1466
1473
  ]
1467
1474
  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" }
1468
1475
  wheels = [
@@ -1534,7 +1541,8 @@ dependencies = [
1534
1541
  { name = "click" },
1535
1542
  { name = "rich" },
1536
1543
  { name = "shellingham" },
1537
- { name = "typing-extensions" },
1544
+ { name = "typing-extensions", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
1545
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
1538
1546
  ]
1539
1547
  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" }
1540
1548
  wheels = [
@@ -1563,17 +1571,34 @@ wheels = [
1563
1571
  name = "typing-extensions"
1564
1572
  version = "4.13.0"
1565
1573
  source = { registry = "https://pypi.org/simple" }
1574
+ resolution-markers = [
1575
+ "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'",
1576
+ ]
1566
1577
  sdist = { url = "https://files.pythonhosted.org/packages/0e/3e/b00a62db91a83fff600de219b6ea9908e6918664899a2d85db222f4fbf19/typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b", size = 106520, upload-time = "2025-03-26T03:49:41.628Z" }
1567
1578
  wheels = [
1568
1579
  { url = "https://files.pythonhosted.org/packages/e0/86/39b65d676ec5732de17b7e3c476e45bb80ec64eb50737a8dce1a4178aba1/typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5", size = 45683, upload-time = "2025-03-26T03:49:40.35Z" },
1569
1580
  ]
1570
1581
 
1582
+ [[package]]
1583
+ name = "typing-extensions"
1584
+ version = "4.15.0"
1585
+ source = { registry = "https://pypi.org/simple" }
1586
+ resolution-markers = [
1587
+ "python_full_version < '3.14' and platform_python_implementation != 'PyPy'",
1588
+ "platform_python_implementation == 'PyPy'",
1589
+ ]
1590
+ 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" }
1591
+ wheels = [
1592
+ { 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" },
1593
+ ]
1594
+
1571
1595
  [[package]]
1572
1596
  name = "typing-inspection"
1573
1597
  version = "0.4.2"
1574
1598
  source = { registry = "https://pypi.org/simple" }
1575
1599
  dependencies = [
1576
- { name = "typing-extensions" },
1600
+ { name = "typing-extensions", version = "4.13.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" },
1601
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14' or platform_python_implementation == 'PyPy'" },
1577
1602
  ]
1578
1603
  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" }
1579
1604
  wheels = [
@@ -1596,7 +1621,7 @@ source = { registry = "https://pypi.org/simple" }
1596
1621
  dependencies = [
1597
1622
  { name = "click" },
1598
1623
  { name = "h11" },
1599
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1624
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1600
1625
  ]
1601
1626
  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" }
1602
1627
  wheels = [
@@ -1605,16 +1630,17 @@ wheels = [
1605
1630
 
1606
1631
  [[package]]
1607
1632
  name = "virtualenv"
1608
- version = "20.30.0"
1633
+ version = "20.36.1"
1609
1634
  source = { registry = "https://pypi.org/simple" }
1610
1635
  dependencies = [
1611
1636
  { name = "distlib" },
1612
1637
  { name = "filelock" },
1613
1638
  { name = "platformdirs" },
1639
+ { name = "typing-extensions", version = "4.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
1614
1640
  ]
1615
- 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" }
1641
+ 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" }
1616
1642
  wheels = [
1617
- { 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" },
1643
+ { 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" },
1618
1644
  ]
1619
1645
 
1620
1646
  [[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`)