awslabs.eks-mcp-server 0.1.5__tar.gz → 0.1.7__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 (46) hide show
  1. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/Dockerfile +33 -22
  2. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/PKG-INFO +5 -57
  3. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/README.md +3 -55
  4. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/eks_stack_handler.py +41 -90
  5. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/iam_handler.py +2 -3
  6. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/models.py +4 -0
  7. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/docker-healthcheck.sh +7 -8
  8. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/pyproject.toml +2 -2
  9. awslabs_eks_mcp_server-0.1.7/uv-requirements.txt +26 -0
  10. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/uv.lock +208 -8
  11. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/.gitignore +0 -0
  12. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/.python-version +0 -0
  13. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/CHANGELOG.md +0 -0
  14. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/LICENSE +0 -0
  15. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/NOTICE +0 -0
  16. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/__init__.py +0 -0
  17. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/__init__.py +0 -0
  18. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/aws_helper.py +0 -0
  19. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/cloudwatch_handler.py +0 -0
  20. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/cloudwatch_metrics_guidance_handler.py +0 -0
  21. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/consts.py +0 -0
  22. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/data/eks_cloudwatch_metrics_guidance.json +0 -0
  23. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/eks_kb_handler.py +0 -0
  24. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/k8s_apis.py +0 -0
  25. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/k8s_client_cache.py +0 -0
  26. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/k8s_handler.py +0 -0
  27. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/logging_helper.py +0 -0
  28. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/scripts/update_eks_cloudwatch_metrics_guidance.py +0 -0
  29. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/server.py +0 -0
  30. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/templates/eks-templates/eks-with-vpc.yaml +0 -0
  31. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/templates/k8s-templates/deployment.yaml +0 -0
  32. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/awslabs/eks_mcp_server/templates/k8s-templates/service.yaml +0 -0
  33. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_aws_helper.py +0 -0
  34. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_cloudwatch_handler.py +0 -0
  35. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_cloudwatch_metrics_guidance_handler.py +0 -0
  36. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_eks_kb_handler.py +0 -0
  37. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_eks_stack_handler.py +0 -0
  38. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_iam_handler.py +0 -0
  39. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_init.py +0 -0
  40. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_k8s_apis.py +0 -0
  41. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_k8s_client_cache.py +0 -0
  42. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_k8s_handler.py +0 -0
  43. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_logging_helper.py +0 -0
  44. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_main.py +0 -0
  45. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_models.py +0 -0
  46. {awslabs_eks_mcp_server-0.1.5 → awslabs_eks_mcp_server-0.1.7}/tests/test_server.py +0 -0
@@ -12,7 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- FROM public.ecr.aws/sam/build-python3.10@sha256:d821662474d65f3cf2fc97dba2fa807a3adb580d02895fc4545527812550ea65 AS uv
15
+ # dependabot should continue to update this to the latest hash.
16
+ FROM public.ecr.aws/docker/library/python:3.13.5-alpine3.21@sha256:c9a09c45a4bcc618c7f7128585b8dd0d41d0c31a8a107db4c8255ffe0b69375d AS uv
16
17
 
17
18
  # Install the project into `/app`
18
19
  WORKDIR /app
@@ -30,40 +31,50 @@ ENV UV_PYTHON_PREFERENCE=only-system
30
31
  ENV UV_FROZEN=true
31
32
 
32
33
  # Copy the required files first
33
- COPY pyproject.toml uv.lock ./
34
+ COPY pyproject.toml uv.lock uv-requirements.txt ./
35
+
36
+ # Python optimization and uv configuration
37
+ ENV PIP_NO_CACHE_DIR=1 \
38
+ PIP_DISABLE_PIP_VERSION_CHECK=1
39
+
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
34
49
 
35
50
  # Install the project's dependencies using the lockfile and settings
36
51
  RUN --mount=type=cache,target=/root/.cache/uv \
37
- pip install uv==0.7.11 && \
38
- uv sync --frozen --no-install-project --no-dev --no-editable
52
+ pip install --require-hashes --requirement uv-requirements.txt --no-cache-dir && \
53
+ uv sync --python 3.13 --frozen --no-install-project --no-dev --no-editable
39
54
 
40
55
  # Then, add the rest of the project source code and install it
41
56
  # Installing separately from its dependencies allows optimal layer caching
42
57
  COPY . /app
43
58
  RUN --mount=type=cache,target=/root/.cache/uv \
44
- uv sync --frozen --no-dev --no-editable
59
+ uv sync --python 3.13 --frozen --no-dev --no-editable
45
60
 
46
61
  # Make the directory just in case it doesn't exist
47
62
  RUN mkdir -p /root/.local
48
63
 
49
- FROM public.ecr.aws/sam/build-python3.10@sha256:d821662474d65f3cf2fc97dba2fa807a3adb580d02895fc4545527812550ea65
64
+ FROM public.ecr.aws/docker/library/python:3.13.5-alpine3.21@sha256:c9a09c45a4bcc618c7f7128585b8dd0d41d0c31a8a107db4c8255ffe0b69375d
50
65
 
51
66
  # Place executables in the environment at the front of the path and include other binaries
52
- ENV PATH="/app/.venv/bin:$PATH:/usr/sbin"
53
-
54
- # Install lsof for the healthcheck
55
- # Install other tools as needed for the MCP server
56
- # Add non-root user and ability to change directory into /root
57
- RUN yum update -y && \
58
- yum install -y lsof && \
59
- yum clean all -y && \
60
- rm -rf /var/cache/yum && \
61
- groupadd --force --system app && \
62
- useradd app -g app -d /app && \
63
- chmod o+x /root
64
-
65
- # Get the project from the uv layer
66
- COPY --from=uv --chown=app:app /root/.local /root/.local
67
+ ENV PATH="/app/.venv/bin:$PATH" \
68
+ PYTHONUNBUFFERED=1
69
+
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
76
+
77
+ # Copy application artifacts from build stage
67
78
  COPY --from=uv --chown=app:app /app/.venv /app/.venv
68
79
 
69
80
  # Get healthcheck script
@@ -73,5 +84,5 @@ COPY ./docker-healthcheck.sh /usr/local/bin/docker-healthcheck.sh
73
84
  USER app
74
85
 
75
86
  # When running the container, add --db-path and a bind mount to the host's db file
76
- HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD [ "docker-healthcheck.sh" ]
87
+ HEALTHCHECK --interval=60s --timeout=10s --start-period=10s --retries=3 CMD ["docker-healthcheck.sh"]
77
88
  ENTRYPOINT ["awslabs.eks-mcp-server"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.eks-mcp-server
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for EKS
5
5
  Project-URL: homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: docs, https://awslabs.github.io/mcp/servers/eks-mcp-server/
@@ -25,7 +25,7 @@ Requires-Dist: boto3>=1.34.0
25
25
  Requires-Dist: cachetools>=5.3.0
26
26
  Requires-Dist: kubernetes>=28.1.0
27
27
  Requires-Dist: loguru>=0.7.0
28
- Requires-Dist: mcp[cli]>=1.6.0
28
+ Requires-Dist: mcp[cli]>=1.11.0
29
29
  Requires-Dist: pydantic>=2.10.6
30
30
  Requires-Dist: pyyaml>=6.0.0
31
31
  Requires-Dist: requests-auth-aws-sigv4
@@ -126,61 +126,9 @@ This quickstart guide walks you through the steps to configure the Amazon EKS MC
126
126
 
127
127
  **Set up Cursor**
128
128
 
129
- 1. Open Cursor.
130
- 2. Click the gear icon (⚙️) in the top right to open the settings panel, click **MCP**, **Add new global MCP server**.
131
- 3. Paste your MCP server definition. For example, this example shows how to configure the EKS MCP Server, including enabling mutating actions with the `--allow-write` flag and access to sensitive data with the `--allow-sensitive-data-access` flag (see the Arguments section for more details):
132
-
133
- **For Mac/Linux:**
134
-
135
- ```
136
- {
137
- "mcpServers": {
138
- "awslabs.eks-mcp-server": {
139
- "autoApprove": [],
140
- "disabled": false,
141
- "command": "uvx",
142
- "args": [
143
- "awslabs.eks-mcp-server@latest",
144
- "--allow-write",
145
- "--allow-sensitive-data-access"
146
- ],
147
- "env": {
148
- "FASTMCP_LOG_LEVEL": "ERROR"
149
- },
150
- "transportType": "stdio"
151
- }
152
- }
153
- }
154
- ```
155
-
156
- **For Windows:**
157
-
158
- ```
159
- {
160
- "mcpServers": {
161
- "awslabs.eks-mcp-server": {
162
- "autoApprove": [],
163
- "disabled": false,
164
- "command": "uvx",
165
- "args": [
166
- "--from",
167
- "awslabs.eks-mcp-server@latest",
168
- "awslabs.eks-mcp-server.exe",
169
- "--allow-write",
170
- "--allow-sensitive-data-access"
171
- ],
172
- "env": {
173
- "FASTMCP_LOG_LEVEL": "ERROR"
174
- },
175
- "transportType": "stdio"
176
- }
177
- }
178
- }
179
- ```
180
-
181
- After a few minutes, you should see a green indicator if your MCP server definition is valid.
182
-
183
- 4. Open a chat panel in Cursor (e.g., `Ctrl/⌘ + L`). In your Cursor chat window, enter your prompt. For example, "Create a new EKS cluster named 'my-test-cluster' in the 'us-west-2' region using Kubernetes version 1.31."
129
+ | Cursor | VS Code |
130
+ |:------:|:-------:|
131
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=awslabs.eks-mcp-server&config=eyJhdXRvQXBwcm92ZSI6W10sImRpc2FibGVkIjpmYWxzZSwiY29tbWFuZCI6InV2eCBhd3NsYWJzLmVrcy1tY3Atc2VydmVyQGxhdGVzdCAtLWFsbG93LXdyaXRlIC0tYWxsb3ctc2Vuc2l0aXZlLWRhdGEtYWNjZXNzIiwiZW52Ijp7IkZBU1RNQ1BfTE9HX0xFVkVMIjoiRVJST1IifSwidHJhbnNwb3J0VHlwZSI6InN0ZGlvIn0%3D) | [![Install on VS Code](https://img.shields.io/badge/Install_on-VS_Code-FF9900?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=EKS%20MCP%20Server&config=%7B%22autoApprove%22%3A%5B%5D%2C%22disabled%22%3Afalse%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.eks-mcp-server%40latest%22%2C%22--allow-write%22%2C%22--allow-sensitive-data-access%22%5D%2C%22env%22%3A%7B%22FASTMCP_LOG_LEVEL%22%3A%22ERROR%22%7D%2C%22transportType%22%3A%22stdio%22%7D) |
184
132
 
185
133
  **Set up the Amazon Q Developer CLI**
186
134
 
@@ -92,61 +92,9 @@ This quickstart guide walks you through the steps to configure the Amazon EKS MC
92
92
 
93
93
  **Set up Cursor**
94
94
 
95
- 1. Open Cursor.
96
- 2. Click the gear icon (⚙️) in the top right to open the settings panel, click **MCP**, **Add new global MCP server**.
97
- 3. Paste your MCP server definition. For example, this example shows how to configure the EKS MCP Server, including enabling mutating actions with the `--allow-write` flag and access to sensitive data with the `--allow-sensitive-data-access` flag (see the Arguments section for more details):
98
-
99
- **For Mac/Linux:**
100
-
101
- ```
102
- {
103
- "mcpServers": {
104
- "awslabs.eks-mcp-server": {
105
- "autoApprove": [],
106
- "disabled": false,
107
- "command": "uvx",
108
- "args": [
109
- "awslabs.eks-mcp-server@latest",
110
- "--allow-write",
111
- "--allow-sensitive-data-access"
112
- ],
113
- "env": {
114
- "FASTMCP_LOG_LEVEL": "ERROR"
115
- },
116
- "transportType": "stdio"
117
- }
118
- }
119
- }
120
- ```
121
-
122
- **For Windows:**
123
-
124
- ```
125
- {
126
- "mcpServers": {
127
- "awslabs.eks-mcp-server": {
128
- "autoApprove": [],
129
- "disabled": false,
130
- "command": "uvx",
131
- "args": [
132
- "--from",
133
- "awslabs.eks-mcp-server@latest",
134
- "awslabs.eks-mcp-server.exe",
135
- "--allow-write",
136
- "--allow-sensitive-data-access"
137
- ],
138
- "env": {
139
- "FASTMCP_LOG_LEVEL": "ERROR"
140
- },
141
- "transportType": "stdio"
142
- }
143
- }
144
- }
145
- ```
146
-
147
- After a few minutes, you should see a green indicator if your MCP server definition is valid.
148
-
149
- 4. Open a chat panel in Cursor (e.g., `Ctrl/⌘ + L`). In your Cursor chat window, enter your prompt. For example, "Create a new EKS cluster named 'my-test-cluster' in the 'us-west-2' region using Kubernetes version 1.31."
95
+ | Cursor | VS Code |
96
+ |:------:|:-------:|
97
+ | [![Install MCP Server](https://cursor.com/deeplink/mcp-install-light.svg)](https://cursor.com/install-mcp?name=awslabs.eks-mcp-server&config=eyJhdXRvQXBwcm92ZSI6W10sImRpc2FibGVkIjpmYWxzZSwiY29tbWFuZCI6InV2eCBhd3NsYWJzLmVrcy1tY3Atc2VydmVyQGxhdGVzdCAtLWFsbG93LXdyaXRlIC0tYWxsb3ctc2Vuc2l0aXZlLWRhdGEtYWNjZXNzIiwiZW52Ijp7IkZBU1RNQ1BfTE9HX0xFVkVMIjoiRVJST1IifSwidHJhbnNwb3J0VHlwZSI6InN0ZGlvIn0%3D) | [![Install on VS Code](https://img.shields.io/badge/Install_on-VS_Code-FF9900?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=EKS%20MCP%20Server&config=%7B%22autoApprove%22%3A%5B%5D%2C%22disabled%22%3Afalse%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22awslabs.eks-mcp-server%40latest%22%2C%22--allow-write%22%2C%22--allow-sensitive-data-access%22%5D%2C%22env%22%3A%7B%22FASTMCP_LOG_LEVEL%22%3A%22ERROR%22%7D%2C%22transportType%22%3A%22stdio%22%7D) |
150
98
 
151
99
  **Set up the Amazon Q Developer CLI**
152
100
 
@@ -37,9 +37,9 @@ from awslabs.eks_mcp_server.models import (
37
37
  GenerateTemplateResponse,
38
38
  )
39
39
  from mcp.server.fastmcp import Context
40
- from mcp.types import EmbeddedResource, ImageContent, TextContent
40
+ from mcp.types import TextContent
41
41
  from pydantic import Field
42
- from typing import Any, Dict, List, Optional, Tuple, Union, cast
42
+ from typing import Any, Dict, Optional, Tuple, Union
43
43
 
44
44
 
45
45
  class EksStackHandler:
@@ -192,19 +192,13 @@ class EksStackHandler:
192
192
  if operation == GENERATE_OPERATION:
193
193
  return GenerateTemplateResponse(
194
194
  isError=True,
195
- content=cast(
196
- List[Union[TextContent, ImageContent, EmbeddedResource]],
197
- [TextContent(type='text', text=error_message)],
198
- ),
195
+ content=[TextContent(type='text', text=error_message)],
199
196
  template_path='',
200
197
  )
201
198
  elif operation == DEPLOY_OPERATION:
202
199
  return DeployStackResponse(
203
200
  isError=True,
204
- content=cast(
205
- List[Union[TextContent, ImageContent, EmbeddedResource]],
206
- [TextContent(type='text', text=error_message)],
207
- ),
201
+ content=[TextContent(type='text', text=error_message)],
208
202
  stack_name='',
209
203
  stack_arn='',
210
204
  cluster_name=cluster_name or '',
@@ -212,10 +206,7 @@ class EksStackHandler:
212
206
  elif operation == DELETE_OPERATION:
213
207
  return DeleteStackResponse(
214
208
  isError=True,
215
- content=cast(
216
- List[Union[TextContent, ImageContent, EmbeddedResource]],
217
- [TextContent(type='text', text=error_message)],
218
- ),
209
+ content=[TextContent(type='text', text=error_message)],
219
210
  stack_name='',
220
211
  stack_id='',
221
212
  cluster_name=cluster_name or '',
@@ -223,10 +214,7 @@ class EksStackHandler:
223
214
  else: # Default to describe operation
224
215
  return DescribeStackResponse(
225
216
  isError=True,
226
- content=cast(
227
- List[Union[TextContent, ImageContent, EmbeddedResource]],
228
- [TextContent(type='text', text=error_message)],
229
- ),
217
+ content=[TextContent(type='text', text=error_message)],
230
218
  stack_name='',
231
219
  stack_id='',
232
220
  cluster_name=cluster_name or '',
@@ -285,10 +273,7 @@ class EksStackHandler:
285
273
  # Default to DescribeStackResponse for invalid operations
286
274
  return DescribeStackResponse(
287
275
  isError=True,
288
- content=cast(
289
- List[Union[TextContent, ImageContent, EmbeddedResource]],
290
- [TextContent(type='text', text=error_message)],
291
- ),
276
+ content=[TextContent(type='text', text=error_message)],
292
277
  stack_name='',
293
278
  stack_id='',
294
279
  cluster_name=cluster_name or '',
@@ -306,10 +291,7 @@ class EksStackHandler:
306
291
  # Default to DescribeStackResponse for general exceptions
307
292
  return DescribeStackResponse(
308
293
  isError=True,
309
- content=cast(
310
- List[Union[TextContent, ImageContent, EmbeddedResource]],
311
- [TextContent(type='text', text=error_message)],
312
- ),
294
+ content=[TextContent(type='text', text=error_message)],
313
295
  stack_name='',
314
296
  stack_id='',
315
297
  cluster_name=cluster_name or '',
@@ -374,15 +356,12 @@ class EksStackHandler:
374
356
 
375
357
  return GenerateTemplateResponse(
376
358
  isError=False,
377
- content=cast(
378
- List[Union[TextContent, ImageContent, EmbeddedResource]],
379
- [
380
- TextContent(
381
- type='text',
382
- text=f'CloudFormation template generated at {template_path} with cluster name {cluster_name}',
383
- )
384
- ],
385
- ),
359
+ content=[
360
+ TextContent(
361
+ type='text',
362
+ text=f'CloudFormation template generated at {template_path} with cluster name {cluster_name}',
363
+ )
364
+ ],
386
365
  template_path=template_path,
387
366
  )
388
367
  except Exception as e:
@@ -391,10 +370,7 @@ class EksStackHandler:
391
370
 
392
371
  return GenerateTemplateResponse(
393
372
  isError=True,
394
- content=cast(
395
- List[Union[TextContent, ImageContent, EmbeddedResource]],
396
- [TextContent(type='text', text=error_message or 'Unknown error')],
397
- ),
373
+ content=[TextContent(type='text', text=error_message or 'Unknown error')],
398
374
  template_path='',
399
375
  )
400
376
 
@@ -421,10 +397,9 @@ class EksStackHandler:
421
397
  if not success:
422
398
  return DeployStackResponse(
423
399
  isError=True,
424
- content=cast(
425
- List[Union[TextContent, ImageContent, EmbeddedResource]],
426
- [TextContent(type='text', text=error_message or 'Unknown error')],
427
- ),
400
+ content=[
401
+ TextContent(type='text', text=error_message or 'Unknown error')
402
+ ],
428
403
  stack_name=stack_name,
429
404
  stack_arn='',
430
405
  cluster_name=cluster_name,
@@ -474,15 +449,12 @@ class EksStackHandler:
474
449
 
475
450
  return DeployStackResponse(
476
451
  isError=False,
477
- content=cast(
478
- List[Union[TextContent, ImageContent, EmbeddedResource]],
479
- [
480
- TextContent(
481
- type='text',
482
- text=f'CloudFormation stack {operation_text} initiated. Stack {operation_text} is in progress and typically takes 15-20 minutes to complete.',
483
- )
484
- ],
485
- ),
452
+ content=[
453
+ TextContent(
454
+ type='text',
455
+ text=f'CloudFormation stack {operation_text} initiated. Stack {operation_text} is in progress and typically takes 15-20 minutes to complete.',
456
+ )
457
+ ],
486
458
  stack_name=stack_name,
487
459
  stack_arn=response['StackId'],
488
460
  cluster_name=cluster_name,
@@ -493,10 +465,7 @@ class EksStackHandler:
493
465
 
494
466
  return DeployStackResponse(
495
467
  isError=True,
496
- content=cast(
497
- List[Union[TextContent, ImageContent, EmbeddedResource]],
498
- [TextContent(type='text', text=error_message or 'Unknown error')],
499
- ),
468
+ content=[TextContent(type='text', text=error_message or 'Unknown error')],
500
469
  stack_name=stack_name,
501
470
  stack_arn='',
502
471
  cluster_name=cluster_name,
@@ -524,10 +493,7 @@ class EksStackHandler:
524
493
 
525
494
  return DescribeStackResponse(
526
495
  isError=True,
527
- content=cast(
528
- List[Union[TextContent, ImageContent, EmbeddedResource]],
529
- [TextContent(type='text', text=error_message or 'Unknown error')],
530
- ),
496
+ content=[TextContent(type='text', text=error_message or 'Unknown error')],
531
497
  stack_name=stack_name,
532
498
  stack_id=stack_id,
533
499
  cluster_name=cluster_name,
@@ -569,15 +535,12 @@ class EksStackHandler:
569
535
 
570
536
  return DescribeStackResponse(
571
537
  isError=False,
572
- content=cast(
573
- List[Union[TextContent, ImageContent, EmbeddedResource]],
574
- [
575
- TextContent(
576
- type='text',
577
- text=f'Successfully described CloudFormation stack {stack_name} for EKS cluster {cluster_name}',
578
- )
579
- ],
580
- ),
538
+ content=[
539
+ TextContent(
540
+ type='text',
541
+ text=f'Successfully described CloudFormation stack {stack_name} for EKS cluster {cluster_name}',
542
+ )
543
+ ],
581
544
  stack_name=stack_name,
582
545
  stack_id=stack_id,
583
546
  cluster_name=cluster_name,
@@ -591,10 +554,7 @@ class EksStackHandler:
591
554
 
592
555
  return DescribeStackResponse(
593
556
  isError=True,
594
- content=cast(
595
- List[Union[TextContent, ImageContent, EmbeddedResource]],
596
- [TextContent(type='text', text=error_message or 'Unknown error')],
597
- ),
557
+ content=[TextContent(type='text', text=error_message or 'Unknown error')],
598
558
  stack_name=stack_name,
599
559
  stack_id='',
600
560
  cluster_name=cluster_name,
@@ -637,10 +597,7 @@ class EksStackHandler:
637
597
 
638
598
  return DeleteStackResponse(
639
599
  isError=True,
640
- content=cast(
641
- List[Union[TextContent, ImageContent, EmbeddedResource]],
642
- [TextContent(type='text', text=error_message or 'Unknown error')],
643
- ),
600
+ content=[TextContent(type='text', text=error_message or 'Unknown error')],
644
601
  stack_name=stack_name,
645
602
  stack_id=stack_id,
646
603
  cluster_name=cluster_name,
@@ -662,15 +619,12 @@ class EksStackHandler:
662
619
 
663
620
  return DeleteStackResponse(
664
621
  isError=False,
665
- content=cast(
666
- List[Union[TextContent, ImageContent, EmbeddedResource]],
667
- [
668
- TextContent(
669
- type='text',
670
- text=f'Initiated deletion of CloudFormation stack {stack_name} for EKS cluster {cluster_name}. Deletion is in progress.',
671
- )
672
- ],
673
- ),
622
+ content=[
623
+ TextContent(
624
+ type='text',
625
+ text=f'Initiated deletion of CloudFormation stack {stack_name} for EKS cluster {cluster_name}. Deletion is in progress.',
626
+ )
627
+ ],
674
628
  stack_name=stack_name,
675
629
  stack_id=stack_id,
676
630
  cluster_name=cluster_name,
@@ -681,10 +635,7 @@ class EksStackHandler:
681
635
 
682
636
  return DeleteStackResponse(
683
637
  isError=True,
684
- content=cast(
685
- List[Union[TextContent, ImageContent, EmbeddedResource]],
686
- [TextContent(type='text', text=error_message or 'Unknown error')],
687
- ),
638
+ content=[TextContent(type='text', text=error_message or 'Unknown error')],
688
639
  stack_name=stack_name,
689
640
  stack_id='',
690
641
  cluster_name=cluster_name,
@@ -104,7 +104,7 @@ class IAMHandler:
104
104
  managed_policies = self._get_managed_policies(ctx, iam_client, role_name)
105
105
 
106
106
  # Get inline policies
107
- inline_policies = self._get_inline_policies(ctx, iam_client, role_name)
107
+ inline_policies = self._get_inline_policies(iam_client, role_name)
108
108
 
109
109
  # Parse the assume role policy document if it's a string, otherwise use it directly
110
110
  if isinstance(role['AssumeRolePolicyDocument'], str):
@@ -271,11 +271,10 @@ class IAMHandler:
271
271
 
272
272
  return managed_policies
273
273
 
274
- def _get_inline_policies(self, ctx, iam_client, role_name):
274
+ def _get_inline_policies(self, iam_client, role_name):
275
275
  """Get inline policies embedded in a role.
276
276
 
277
277
  Args:
278
- ctx: The MCP context
279
278
  iam_client: IAM client to use
280
279
  role_name: Name of the IAM role
281
280
 
@@ -209,6 +209,7 @@ class GenerateTemplateResponse(CallToolResult):
209
209
  """Response model for generate operation of manage_eks_stacks tool."""
210
210
 
211
211
  template_path: str = Field(..., description='Path to the generated template')
212
+ content: list = Field(..., description='Content blocks for the response')
212
213
 
213
214
 
214
215
  class DeployStackResponse(CallToolResult):
@@ -217,6 +218,7 @@ class DeployStackResponse(CallToolResult):
217
218
  stack_name: str = Field(..., description='Name of the CloudFormation stack')
218
219
  stack_arn: str = Field(..., description='ARN of the CloudFormation stack')
219
220
  cluster_name: str = Field(..., description='Name of the EKS cluster')
221
+ content: list = Field(..., description='Content blocks for the response')
220
222
 
221
223
 
222
224
  class DescribeStackResponse(CallToolResult):
@@ -228,6 +230,7 @@ class DescribeStackResponse(CallToolResult):
228
230
  creation_time: str = Field(..., description='Creation time of the stack')
229
231
  stack_status: str = Field(..., description='Current status of the stack')
230
232
  outputs: Dict[str, str] = Field(..., description='Stack outputs')
233
+ content: list = Field(..., description='Content blocks for the response')
231
234
 
232
235
 
233
236
  class DeleteStackResponse(CallToolResult):
@@ -236,6 +239,7 @@ class DeleteStackResponse(CallToolResult):
236
239
  stack_name: str = Field(..., description='Name of the deleted CloudFormation stack')
237
240
  stack_id: str = Field(..., description='ID of the deleted CloudFormation stack')
238
241
  cluster_name: str = Field(..., description='Name of the EKS cluster')
242
+ content: list = Field(..., description='Content blocks for the response')
239
243
 
240
244
 
241
245
  class PolicySummary(BaseModel):
@@ -1,5 +1,4 @@
1
1
  #!/bin/sh
2
-
3
2
  # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
3
  #
5
4
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,13 +13,13 @@
14
13
  # See the License for the specific language governing permissions and
15
14
  # limitations under the License.
16
15
 
17
- if [ "$(lsof +c 0 -p 1 | grep -e "^awslabs\..*\s1\s.*\sunix\s.*socket$" | wc -l)" -ne "0" ]; then
18
- echo -n "$(lsof +c 0 -p 1 | grep -e "^awslabs\..*\s1\s.*\sunix\s.*socket$" | wc -l) awslabs.* streams found";
16
+ SERVER="eks-mcp-server"
17
+
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
20
+ echo -n "$SERVER is running";
19
21
  exit 0;
20
- else
21
- echo -n "Zero awslabs.* streams found";
22
- exit 1;
23
22
  fi;
24
23
 
25
- echo -n "Never should reach here";
26
- exit 99;
24
+ # Unhealthy
25
+ exit 1;
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "awslabs.eks-mcp-server"
3
- version = "0.1.5"
3
+ version = "0.1.7"
4
4
  description = "An AWS Labs Model Context Protocol (MCP) server for EKS"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
7
7
  dependencies = [
8
8
  "loguru>=0.7.0",
9
- "mcp[cli]>=1.6.0",
9
+ "mcp[cli]>=1.11.0",
10
10
  "pydantic>=2.10.6",
11
11
  "boto3>=1.34.0",
12
12
  "kubernetes>=28.1.0",
@@ -0,0 +1,26 @@
1
+ #
2
+ # This file is autogenerated by pip-compile with Python 3.10
3
+ # by the following command:
4
+ #
5
+ # pip-compile --generate-hashes --output-file=uv-requirements.txt --strip-extras uv-requirements-0.7.13.in
6
+ #
7
+ uv==0.7.13 \
8
+ --hash=sha256:05f3c03c4ea55d294f3da725b6c2c2ff544754c18552da7594def4ec3889dcfb \
9
+ --hash=sha256:1afdbfcabc3425b383141ba42d413841c0a48b9ee0f4da65459313275e3cea84 \
10
+ --hash=sha256:33837aca7bdf02d47554d5d44f9e71756ee17c97073b07b4afead25309855bc7 \
11
+ --hash=sha256:4efa555b217e15767f0691a51d435f7bb2b0bf473fdfd59f173aeda8a93b8d17 \
12
+ --hash=sha256:4f828174e15a557d3bc0f809de76135c3b66bcbf524657f8ced9d22fc978b89c \
13
+ --hash=sha256:527a12d0c2f4d15f72b275b6f4561ae92af76dd59b4624796fddd45867f13c33 \
14
+ --hash=sha256:5786a29e286f2cc3cbda13a357fd9a4dd5bf1d7448a9d3d842b26b4f784a3a86 \
15
+ --hash=sha256:59915aec9fd2b845708a76ddc6c0639cfc99b6e2811854ea2425ee7552aff0e9 \
16
+ --hash=sha256:721b058064150fc1c6d88e277af093d1b4f8bb7a59546fe9969d9ff7dbe3f6fd \
17
+ --hash=sha256:866cad0d04a7de1aaa3c5cbef203f9d3feef9655972dcccc3283d60122db743b \
18
+ --hash=sha256:88fcf2bfbb53309531a850af50d2ea75874099b19d4159625d0b4f88c53494b9 \
19
+ --hash=sha256:8c0c29a2089ff9011d6c3abccd272f3ee6d0e166dae9e5232099fd83d26104d9 \
20
+ --hash=sha256:9c457a84cfbe2019ba301e14edd3e1c950472abd0b87fc77622ab3fc475ba012 \
21
+ --hash=sha256:9d2952a1e74c7027347c74cee1cb2be09121a5290db38498b8b17ff585f73748 \
22
+ --hash=sha256:a51006c7574e819308d92a3452b22d5bd45ef8593a4983b5856aa7cb8220885f \
23
+ --hash=sha256:b1af81e57d098b21b28f42ec756f0e26dce2341d59ba4e4f11759bc3ca2c0a99 \
24
+ --hash=sha256:e077dcac19e564cae8b4223b7807c2f617a59938f8142ca77fc6348ae9c6d0aa \
25
+ --hash=sha256:f28e70baadfebe71dcc2d9505059b988d75e903fc62258b102eb87dc4b6994a3
26
+ # via -r uv-requirements-0.7.13.in (contents of `uv==0.7.13`)
@@ -35,9 +35,18 @@ wheels = [
35
35
  { url = "https://files.pythonhosted.org/packages/31/da/e42d7a9d8dd33fa775f467e4028a47936da2f01e4b0e561f9ba0d74cb0ca/argcomplete-3.6.2-py3-none-any.whl", hash = "sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591", size = 43708 },
36
36
  ]
37
37
 
38
+ [[package]]
39
+ name = "attrs"
40
+ version = "25.3.0"
41
+ source = { registry = "https://pypi.org/simple" }
42
+ sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 }
43
+ wheels = [
44
+ { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 },
45
+ ]
46
+
38
47
  [[package]]
39
48
  name = "awslabs-eks-mcp-server"
40
- version = "0.1.0"
49
+ version = "0.1.6"
41
50
  source = { editable = "." }
42
51
  dependencies = [
43
52
  { name = "boto3" },
@@ -69,7 +78,7 @@ requires-dist = [
69
78
  { name = "cachetools", specifier = ">=5.3.0" },
70
79
  { name = "kubernetes", specifier = ">=28.1.0" },
71
80
  { name = "loguru", specifier = ">=0.7.0" },
72
- { name = "mcp", extras = ["cli"], specifier = ">=1.6.0" },
81
+ { name = "mcp", extras = ["cli"], specifier = ">=1.11.0" },
73
82
  { name = "pydantic", specifier = ">=2.10.6" },
74
83
  { name = "pyyaml", specifier = ">=6.0.0" },
75
84
  { name = "requests", specifier = ">=2.31.0" },
@@ -473,6 +482,33 @@ wheels = [
473
482
  { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 },
474
483
  ]
475
484
 
485
+ [[package]]
486
+ name = "jsonschema"
487
+ version = "4.24.0"
488
+ source = { registry = "https://pypi.org/simple" }
489
+ dependencies = [
490
+ { name = "attrs" },
491
+ { name = "jsonschema-specifications" },
492
+ { name = "referencing" },
493
+ { name = "rpds-py" },
494
+ ]
495
+ sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480 }
496
+ wheels = [
497
+ { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709 },
498
+ ]
499
+
500
+ [[package]]
501
+ name = "jsonschema-specifications"
502
+ version = "2025.4.1"
503
+ source = { registry = "https://pypi.org/simple" }
504
+ dependencies = [
505
+ { name = "referencing" },
506
+ ]
507
+ sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 }
508
+ wheels = [
509
+ { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 },
510
+ ]
511
+
476
512
  [[package]]
477
513
  name = "kubernetes"
478
514
  version = "32.0.1"
@@ -580,22 +616,24 @@ wheels = [
580
616
 
581
617
  [[package]]
582
618
  name = "mcp"
583
- version = "1.9.1"
619
+ version = "1.11.0"
584
620
  source = { registry = "https://pypi.org/simple" }
585
621
  dependencies = [
586
622
  { name = "anyio" },
587
623
  { name = "httpx" },
588
624
  { name = "httpx-sse" },
625
+ { name = "jsonschema" },
589
626
  { name = "pydantic" },
590
627
  { name = "pydantic-settings" },
591
628
  { name = "python-multipart" },
629
+ { name = "pywin32", marker = "sys_platform == 'win32'" },
592
630
  { name = "sse-starlette" },
593
631
  { name = "starlette" },
594
632
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
595
633
  ]
596
- sdist = { url = "https://files.pythonhosted.org/packages/e7/bc/54aec2c334698cc575ca3b3481eed627125fb66544152fa1af927b1a495c/mcp-1.9.1.tar.gz", hash = "sha256:19879cd6dde3d763297617242888c2f695a95dfa854386a6a68676a646ce75e4", size = 316247 }
634
+ sdist = { url = "https://files.pythonhosted.org/packages/3a/f5/9506eb5578d5bbe9819ee8ba3198d0ad0e2fbe3bab8b257e4131ceb7dfb6/mcp-1.11.0.tar.gz", hash = "sha256:49a213df56bb9472ff83b3132a4825f5c8f5b120a90246f08b0dac6bedac44c8", size = 406907 }
597
635
  wheels = [
598
- { url = "https://files.pythonhosted.org/packages/a6/c0/4ac795585a22a0a2d09cd2b1187b0252d2afcdebd01e10a68bbac4d34890/mcp-1.9.1-py3-none-any.whl", hash = "sha256:2900ded8ffafc3c8a7bfcfe8bc5204037e988e753ec398f371663e6a06ecd9a9", size = 130261 },
636
+ { url = "https://files.pythonhosted.org/packages/92/9c/c9ca79f9c512e4113a5d07043013110bb3369fc7770040c61378c7fbcf70/mcp-1.11.0-py3-none-any.whl", hash = "sha256:58deac37f7483e4b338524b98bc949b7c2b7c33d978f5fafab5bde041c5e2595", size = 155880 },
599
637
  ]
600
638
 
601
639
  [package.optional-dependencies]
@@ -929,6 +967,28 @@ wheels = [
929
967
  { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 },
930
968
  ]
931
969
 
970
+ [[package]]
971
+ name = "pywin32"
972
+ version = "311"
973
+ source = { registry = "https://pypi.org/simple" }
974
+ wheels = [
975
+ { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432 },
976
+ { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103 },
977
+ { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557 },
978
+ { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031 },
979
+ { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308 },
980
+ { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930 },
981
+ { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543 },
982
+ { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040 },
983
+ { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102 },
984
+ { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700 },
985
+ { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700 },
986
+ { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318 },
987
+ { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714 },
988
+ { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800 },
989
+ { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540 },
990
+ ]
991
+
932
992
  [[package]]
933
993
  name = "pyyaml"
934
994
  version = "6.0.2"
@@ -985,6 +1045,20 @@ wheels = [
985
1045
  { url = "https://files.pythonhosted.org/packages/ad/3f/11dd4cd4f39e05128bfd20138faea57bec56f9ffba6185d276e3107ba5b2/questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec", size = 36747 },
986
1046
  ]
987
1047
 
1048
+ [[package]]
1049
+ name = "referencing"
1050
+ version = "0.36.2"
1051
+ source = { registry = "https://pypi.org/simple" }
1052
+ dependencies = [
1053
+ { name = "attrs" },
1054
+ { name = "rpds-py" },
1055
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1056
+ ]
1057
+ sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 }
1058
+ wheels = [
1059
+ { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 },
1060
+ ]
1061
+
988
1062
  [[package]]
989
1063
  name = "requests"
990
1064
  version = "2.32.3"
@@ -1039,6 +1113,132 @@ wheels = [
1039
1113
  { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 },
1040
1114
  ]
1041
1115
 
1116
+ [[package]]
1117
+ name = "rpds-py"
1118
+ version = "0.26.0"
1119
+ source = { registry = "https://pypi.org/simple" }
1120
+ sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385 }
1121
+ wheels = [
1122
+ { url = "https://files.pythonhosted.org/packages/b9/31/1459645f036c3dfeacef89e8e5825e430c77dde8489f3b99eaafcd4a60f5/rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37", size = 372466 },
1123
+ { url = "https://files.pythonhosted.org/packages/dd/ff/3d0727f35836cc8773d3eeb9a46c40cc405854e36a8d2e951f3a8391c976/rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0", size = 357825 },
1124
+ { url = "https://files.pythonhosted.org/packages/bf/ce/badc5e06120a54099ae287fa96d82cbb650a5f85cf247ffe19c7b157fd1f/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd", size = 381530 },
1125
+ { url = "https://files.pythonhosted.org/packages/1e/a5/fa5d96a66c95d06c62d7a30707b6a4cfec696ab8ae280ee7be14e961e118/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79", size = 396933 },
1126
+ { url = "https://files.pythonhosted.org/packages/00/a7/7049d66750f18605c591a9db47d4a059e112a0c9ff8de8daf8fa0f446bba/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3", size = 513973 },
1127
+ { url = "https://files.pythonhosted.org/packages/0e/f1/528d02c7d6b29d29fac8fd784b354d3571cc2153f33f842599ef0cf20dd2/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf", size = 402293 },
1128
+ { url = "https://files.pythonhosted.org/packages/15/93/fde36cd6e4685df2cd08508f6c45a841e82f5bb98c8d5ecf05649522acb5/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc", size = 383787 },
1129
+ { url = "https://files.pythonhosted.org/packages/69/f2/5007553aaba1dcae5d663143683c3dfd03d9395289f495f0aebc93e90f24/rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19", size = 416312 },
1130
+ { url = "https://files.pythonhosted.org/packages/8f/a7/ce52c75c1e624a79e48a69e611f1c08844564e44c85db2b6f711d76d10ce/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11", size = 558403 },
1131
+ { url = "https://files.pythonhosted.org/packages/79/d5/e119db99341cc75b538bf4cb80504129fa22ce216672fb2c28e4a101f4d9/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f", size = 588323 },
1132
+ { url = "https://files.pythonhosted.org/packages/93/94/d28272a0b02f5fe24c78c20e13bbcb95f03dc1451b68e7830ca040c60bd6/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323", size = 554541 },
1133
+ { url = "https://files.pythonhosted.org/packages/93/e0/8c41166602f1b791da892d976057eba30685486d2e2c061ce234679c922b/rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45", size = 220442 },
1134
+ { url = "https://files.pythonhosted.org/packages/87/f0/509736bb752a7ab50fb0270c2a4134d671a7b3038030837e5536c3de0e0b/rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84", size = 231314 },
1135
+ { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610 },
1136
+ { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032 },
1137
+ { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525 },
1138
+ { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089 },
1139
+ { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255 },
1140
+ { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283 },
1141
+ { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881 },
1142
+ { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822 },
1143
+ { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347 },
1144
+ { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956 },
1145
+ { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363 },
1146
+ { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123 },
1147
+ { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732 },
1148
+ { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917 },
1149
+ { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933 },
1150
+ { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447 },
1151
+ { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711 },
1152
+ { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865 },
1153
+ { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763 },
1154
+ { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651 },
1155
+ { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079 },
1156
+ { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379 },
1157
+ { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033 },
1158
+ { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639 },
1159
+ { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105 },
1160
+ { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272 },
1161
+ { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995 },
1162
+ { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198 },
1163
+ { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917 },
1164
+ { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073 },
1165
+ { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214 },
1166
+ { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113 },
1167
+ { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189 },
1168
+ { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998 },
1169
+ { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903 },
1170
+ { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785 },
1171
+ { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329 },
1172
+ { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875 },
1173
+ { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636 },
1174
+ { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663 },
1175
+ { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428 },
1176
+ { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571 },
1177
+ { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475 },
1178
+ { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692 },
1179
+ { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415 },
1180
+ { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783 },
1181
+ { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844 },
1182
+ { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105 },
1183
+ { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440 },
1184
+ { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759 },
1185
+ { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032 },
1186
+ { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416 },
1187
+ { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049 },
1188
+ { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428 },
1189
+ { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524 },
1190
+ { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292 },
1191
+ { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334 },
1192
+ { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875 },
1193
+ { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993 },
1194
+ { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683 },
1195
+ { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825 },
1196
+ { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292 },
1197
+ { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435 },
1198
+ { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410 },
1199
+ { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724 },
1200
+ { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285 },
1201
+ { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459 },
1202
+ { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083 },
1203
+ { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291 },
1204
+ { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445 },
1205
+ { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206 },
1206
+ { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330 },
1207
+ { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254 },
1208
+ { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094 },
1209
+ { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889 },
1210
+ { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301 },
1211
+ { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891 },
1212
+ { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044 },
1213
+ { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774 },
1214
+ { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886 },
1215
+ { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027 },
1216
+ { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821 },
1217
+ { url = "https://files.pythonhosted.org/packages/ef/9a/1f033b0b31253d03d785b0cd905bc127e555ab496ea6b4c7c2e1f951f2fd/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958", size = 373226 },
1218
+ { url = "https://files.pythonhosted.org/packages/58/29/5f88023fd6aaaa8ca3c4a6357ebb23f6f07da6079093ccf27c99efce87db/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e", size = 359230 },
1219
+ { url = "https://files.pythonhosted.org/packages/6c/6c/13eaebd28b439da6964dde22712b52e53fe2824af0223b8e403249d10405/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08", size = 382363 },
1220
+ { url = "https://files.pythonhosted.org/packages/55/fc/3bb9c486b06da19448646f96147796de23c5811ef77cbfc26f17307b6a9d/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6", size = 397146 },
1221
+ { url = "https://files.pythonhosted.org/packages/15/18/9d1b79eb4d18e64ba8bba9e7dec6f9d6920b639f22f07ee9368ca35d4673/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871", size = 514804 },
1222
+ { url = "https://files.pythonhosted.org/packages/4f/5a/175ad7191bdbcd28785204621b225ad70e85cdfd1e09cc414cb554633b21/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4", size = 402820 },
1223
+ { url = "https://files.pythonhosted.org/packages/11/45/6a67ecf6d61c4d4aff4bc056e864eec4b2447787e11d1c2c9a0242c6e92a/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f", size = 384567 },
1224
+ { url = "https://files.pythonhosted.org/packages/a1/ba/16589da828732b46454c61858950a78fe4c931ea4bf95f17432ffe64b241/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73", size = 416520 },
1225
+ { url = "https://files.pythonhosted.org/packages/81/4b/00092999fc7c0c266045e984d56b7314734cc400a6c6dc4d61a35f135a9d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f", size = 559362 },
1226
+ { url = "https://files.pythonhosted.org/packages/96/0c/43737053cde1f93ac4945157f7be1428724ab943e2132a0d235a7e161d4e/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84", size = 588113 },
1227
+ { url = "https://files.pythonhosted.org/packages/46/46/8e38f6161466e60a997ed7e9951ae5de131dedc3cf778ad35994b4af823d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b", size = 555429 },
1228
+ { url = "https://files.pythonhosted.org/packages/2c/ac/65da605e9f1dd643ebe615d5bbd11b6efa1d69644fc4bf623ea5ae385a82/rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8", size = 231950 },
1229
+ { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505 },
1230
+ { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468 },
1231
+ { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680 },
1232
+ { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035 },
1233
+ { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922 },
1234
+ { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822 },
1235
+ { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336 },
1236
+ { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871 },
1237
+ { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439 },
1238
+ { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380 },
1239
+ { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334 },
1240
+ ]
1241
+
1042
1242
  [[package]]
1043
1243
  name = "rsa"
1044
1244
  version = "4.9.1"
@@ -1199,7 +1399,7 @@ wheels = [
1199
1399
 
1200
1400
  [[package]]
1201
1401
  name = "typer"
1202
- version = "0.15.4"
1402
+ version = "0.16.0"
1203
1403
  source = { registry = "https://pypi.org/simple" }
1204
1404
  dependencies = [
1205
1405
  { name = "click" },
@@ -1207,9 +1407,9 @@ dependencies = [
1207
1407
  { name = "shellingham" },
1208
1408
  { name = "typing-extensions" },
1209
1409
  ]
1210
- sdist = { url = "https://files.pythonhosted.org/packages/6c/89/c527e6c848739be8ceb5c44eb8208c52ea3515c6cf6406aa61932887bf58/typer-0.15.4.tar.gz", hash = "sha256:89507b104f9b6a0730354f27c39fae5b63ccd0c95b1ce1f1a6ba0cfd329997c3", size = 101559 }
1410
+ sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625 }
1211
1411
  wheels = [
1212
- { url = "https://files.pythonhosted.org/packages/c9/62/d4ba7afe2096d5659ec3db8b15d8665bdcb92a3c6ff0b95e99895b335a9c/typer-0.15.4-py3-none-any.whl", hash = "sha256:eb0651654dcdea706780c466cf06d8f174405a659ffff8f163cfbfee98c0e173", size = 45258 },
1412
+ { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317 },
1213
1413
  ]
1214
1414
 
1215
1415
  [[package]]