Spaces:
Sleeping
Sleeping
Kacper Łukawski commited on
Commit ·
091fadc
1
Parent(s): c63bddb
Add google-drive-mcp
Browse files- Dockerfile +14 -1
- README.md +78 -1
- app/api.py +16 -3
- app/models.py +1 -1
- app/static/index.html +6 -6
- entrypoint.sh +23 -0
- pyproject.toml +1 -0
- run.sh +8 -1
- uv.lock +192 -0
Dockerfile
CHANGED
|
@@ -1,5 +1,16 @@
|
|
| 1 |
FROM python:3.14-slim
|
| 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/
|
| 4 |
|
| 5 |
WORKDIR /app
|
|
@@ -9,7 +20,9 @@ RUN uv sync --no-dev --frozen
|
|
| 9 |
|
| 10 |
COPY main.py .
|
| 11 |
COPY app/ app/
|
|
|
|
|
|
|
| 12 |
|
| 13 |
EXPOSE 7860
|
| 14 |
|
| 15 |
-
CMD ["
|
|
|
|
| 1 |
FROM python:3.14-slim
|
| 2 |
|
| 3 |
+
# Install Node.js 20 LTS
|
| 4 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 5 |
+
curl \
|
| 6 |
+
ca-certificates \
|
| 7 |
+
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
| 8 |
+
&& apt-get install -y --no-install-recommends nodejs \
|
| 9 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 10 |
+
|
| 11 |
+
# Install Google Drive MCP server globally
|
| 12 |
+
RUN npm install -g @piotr-agier/google-drive-mcp
|
| 13 |
+
|
| 14 |
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/
|
| 15 |
|
| 16 |
WORKDIR /app
|
|
|
|
| 20 |
|
| 21 |
COPY main.py .
|
| 22 |
COPY app/ app/
|
| 23 |
+
COPY entrypoint.sh .
|
| 24 |
+
RUN chmod +x entrypoint.sh
|
| 25 |
|
| 26 |
EXPOSE 7860
|
| 27 |
|
| 28 |
+
CMD ["./entrypoint.sh"]
|
README.md
CHANGED
|
@@ -7,4 +7,81 @@ sdk: docker
|
|
| 7 |
pinned: false
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
pinned: false
|
| 8 |
---
|
| 9 |
|
| 10 |
+
# Post Conference Report Demo
|
| 11 |
+
|
| 12 |
+
A web app that transforms raw conference notes into structured markdown reports via a streaming LLM API.
|
| 13 |
+
|
| 14 |
+
**Stack:** FastAPI + vanilla JS/Tailwind CSS frontend, Haystack AI for LLM orchestration, NVIDIA Nemotron-3 Super 120B model via NVIDIA API. The Docker image also bundles the [google-drive-mcp](https://github.com/piotr-agier/google-drive-mcp) server as a background process.
|
| 15 |
+
|
| 16 |
+
## Prerequisites
|
| 17 |
+
|
| 18 |
+
- `NVIDIA_API_KEY` — set in a `.env` file at the project root
|
| 19 |
+
- Google Drive OAuth credentials (for the MCP server) — see [Google Drive MCP setup](#google-drive-mcp-setup) below
|
| 20 |
+
|
| 21 |
+
## Running locally
|
| 22 |
+
|
| 23 |
+
```bash
|
| 24 |
+
# Install dependencies
|
| 25 |
+
uv sync
|
| 26 |
+
|
| 27 |
+
# Run the app (port 7860)
|
| 28 |
+
uv run main.py
|
| 29 |
+
```
|
| 30 |
+
|
| 31 |
+
## Running with Docker
|
| 32 |
+
|
| 33 |
+
```bash
|
| 34 |
+
./run.sh
|
| 35 |
+
```
|
| 36 |
+
|
| 37 |
+
`run.sh` builds the image and starts the container. It also mounts your local Google Drive MCP credentials and tokens automatically if they exist at `~/.config/google-drive-mcp/`.
|
| 38 |
+
|
| 39 |
+
To run manually:
|
| 40 |
+
|
| 41 |
+
```bash
|
| 42 |
+
docker build -t post-conference-report-demo .
|
| 43 |
+
docker run --rm -p 7860:7860 --env-file .env \
|
| 44 |
+
-v ~/.config/google-drive-mcp/gcp-oauth.keys.json:/root/.config/google-drive-mcp/gcp-oauth.keys.json:ro \
|
| 45 |
+
-v ~/.config/google-drive-mcp/tokens.json:/root/.config/google-drive-mcp/tokens.json \
|
| 46 |
+
post-conference-report-demo
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
## Google Drive MCP setup
|
| 50 |
+
|
| 51 |
+
The Docker image installs `@piotr-agier/google-drive-mcp` globally and starts it in the background on container startup. It requires Google OAuth 2.0 credentials.
|
| 52 |
+
|
| 53 |
+
### 1. Create OAuth credentials
|
| 54 |
+
|
| 55 |
+
1. Open [Google Cloud Console](https://console.cloud.google.com/) and create (or select) a project
|
| 56 |
+
2. Enable the following APIs: Drive, Docs, Sheets, Slides, Calendar
|
| 57 |
+
3. Create an OAuth 2.0 **Desktop app** credential and download the JSON file
|
| 58 |
+
4. Place it at `~/.config/google-drive-mcp/gcp-oauth.keys.json`
|
| 59 |
+
|
| 60 |
+
### 2. Authenticate (once, on the host)
|
| 61 |
+
|
| 62 |
+
```bash
|
| 63 |
+
npx @piotr-agier/google-drive-mcp auth
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
This opens a browser for the OAuth flow and writes the token to `~/.config/google-drive-mcp/tokens.json`. The token file is mounted into the container by `run.sh` and persists across container restarts.
|
| 67 |
+
|
| 68 |
+
### Alternative: pass credentials via environment variables
|
| 69 |
+
|
| 70 |
+
Instead of volume mounts you can supply the JSON file contents directly as environment variables — useful for cloud deployments (HuggingFace Spaces secrets, Kubernetes secrets, etc.).
|
| 71 |
+
|
| 72 |
+
Add these to your `.env` file:
|
| 73 |
+
|
| 74 |
+
```
|
| 75 |
+
GOOGLE_DRIVE_OAUTH_KEYS_JSON={"installed":{"client_id":"...","client_secret":"...",...}}
|
| 76 |
+
GOOGLE_DRIVE_TOKENS_JSON={"access_token":"...","refresh_token":"...",...}
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
On container startup, `entrypoint.sh` writes the values to temp files and points the MCP server at them. Volume mounts take precedence if both are present.
|
| 80 |
+
|
| 81 |
+
### MCP server logs
|
| 82 |
+
|
| 83 |
+
Inside a running container:
|
| 84 |
+
|
| 85 |
+
```bash
|
| 86 |
+
docker exec <container-id> cat /var/log/google-drive-mcp.log
|
| 87 |
+
```
|
app/api.py
CHANGED
|
@@ -6,7 +6,9 @@ from pathlib import Path
|
|
| 6 |
from fastapi import FastAPI
|
| 7 |
from fastapi.responses import FileResponse, StreamingResponse
|
| 8 |
from haystack.dataclasses import ChatMessage
|
|
|
|
| 9 |
from haystack_integrations.components.generators.nvidia import NvidiaChatGenerator
|
|
|
|
| 10 |
|
| 11 |
from app.models import AgentRequest
|
| 12 |
from app.queue import StreamingQueue
|
|
@@ -27,6 +29,13 @@ Conference notes:
|
|
| 27 |
|
| 28 |
Generate the report now:"""
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
app = FastAPI()
|
| 31 |
|
| 32 |
_STATIC = Path(__file__).parent / "static"
|
|
@@ -38,7 +47,7 @@ async def index() -> FileResponse:
|
|
| 38 |
|
| 39 |
|
| 40 |
@app.post("/agent")
|
| 41 |
-
async def
|
| 42 |
streaming_queue = StreamingQueue()
|
| 43 |
generator = NvidiaChatGenerator(
|
| 44 |
model="nvidia/nemotron-3-super-120b-a12b",
|
|
@@ -48,15 +57,19 @@ async def agent(request: AgentRequest) -> StreamingResponse:
|
|
| 48 |
"max_tokens": 100_000,
|
| 49 |
},
|
| 50 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
messages = [
|
| 53 |
ChatMessage.from_system(SYSTEM_PROMPT),
|
| 54 |
-
ChatMessage.from_user(USER_PROMPT.format(notes=request.
|
| 55 |
]
|
| 56 |
|
| 57 |
async def run() -> None:
|
| 58 |
async with streaming_queue:
|
| 59 |
-
await
|
| 60 |
|
| 61 |
async def event_stream() -> AsyncGenerator[str, None]:
|
| 62 |
asyncio.create_task(run())
|
|
|
|
| 6 |
from fastapi import FastAPI
|
| 7 |
from fastapi.responses import FileResponse, StreamingResponse
|
| 8 |
from haystack.dataclasses import ChatMessage
|
| 9 |
+
from haystack.components.agents import Agent
|
| 10 |
from haystack_integrations.components.generators.nvidia import NvidiaChatGenerator
|
| 11 |
+
from haystack_integrations.tools.mcp import MCPToolset, StreamableHttpServerInfo
|
| 12 |
|
| 13 |
from app.models import AgentRequest
|
| 14 |
from app.queue import StreamingQueue
|
|
|
|
| 29 |
|
| 30 |
Generate the report now:"""
|
| 31 |
|
| 32 |
+
toolset = MCPToolset(
|
| 33 |
+
server_info=StreamableHttpServerInfo(
|
| 34 |
+
# Point to google-drive-mcp running in the same container
|
| 35 |
+
url="http://127.0.0.1:3100/mcp",
|
| 36 |
+
),
|
| 37 |
+
)
|
| 38 |
+
|
| 39 |
app = FastAPI()
|
| 40 |
|
| 41 |
_STATIC = Path(__file__).parent / "static"
|
|
|
|
| 47 |
|
| 48 |
|
| 49 |
@app.post("/agent")
|
| 50 |
+
async def handle_agent_call(request: AgentRequest) -> StreamingResponse:
|
| 51 |
streaming_queue = StreamingQueue()
|
| 52 |
generator = NvidiaChatGenerator(
|
| 53 |
model="nvidia/nemotron-3-super-120b-a12b",
|
|
|
|
| 57 |
"max_tokens": 100_000,
|
| 58 |
},
|
| 59 |
)
|
| 60 |
+
agent = Agent(
|
| 61 |
+
chat_generator=generator,
|
| 62 |
+
tools=toolset,
|
| 63 |
+
)
|
| 64 |
|
| 65 |
messages = [
|
| 66 |
ChatMessage.from_system(SYSTEM_PROMPT),
|
| 67 |
+
ChatMessage.from_user(USER_PROMPT.format(notes=request.prompt)),
|
| 68 |
]
|
| 69 |
|
| 70 |
async def run() -> None:
|
| 71 |
async with streaming_queue:
|
| 72 |
+
await agent.run_async(messages=messages)
|
| 73 |
|
| 74 |
async def event_stream() -> AsyncGenerator[str, None]:
|
| 75 |
asyncio.create_task(run())
|
app/models.py
CHANGED
|
@@ -2,4 +2,4 @@ from pydantic import BaseModel
|
|
| 2 |
|
| 3 |
|
| 4 |
class AgentRequest(BaseModel):
|
| 5 |
-
|
|
|
|
| 2 |
|
| 3 |
|
| 4 |
class AgentRequest(BaseModel):
|
| 5 |
+
prompt: str
|
app/static/index.html
CHANGED
|
@@ -23,9 +23,9 @@
|
|
| 23 |
<p class="text-gray-400 text-sm -mt-4">Paste your raw notes and get a structured report in seconds.</p>
|
| 24 |
|
| 25 |
<div class="w-full max-w-3xl flex flex-col gap-3">
|
| 26 |
-
<label for="
|
| 27 |
<textarea
|
| 28 |
-
id="
|
| 29 |
rows="10"
|
| 30 |
placeholder="Paste your raw conference notes here..."
|
| 31 |
class="w-full rounded-xl border border-gray-700 bg-gray-900 text-gray-100
|
|
@@ -53,15 +53,15 @@
|
|
| 53 |
<script>
|
| 54 |
marked.use({ breaks: true });
|
| 55 |
|
| 56 |
-
const
|
| 57 |
const btn = document.getElementById('generateBtn');
|
| 58 |
const panel = document.getElementById('outputPanel');
|
| 59 |
const outputEl = document.getElementById('output');
|
| 60 |
const statusEl = document.getElementById('status');
|
| 61 |
|
| 62 |
btn.addEventListener('click', async () => {
|
| 63 |
-
const
|
| 64 |
-
if (!
|
| 65 |
|
| 66 |
btn.disabled = true;
|
| 67 |
panel.classList.remove('hidden');
|
|
@@ -74,7 +74,7 @@
|
|
| 74 |
const response = await fetch('/agent', {
|
| 75 |
method: 'POST',
|
| 76 |
headers: { 'Content-Type': 'application/json' },
|
| 77 |
-
body: JSON.stringify({
|
| 78 |
});
|
| 79 |
|
| 80 |
if (!response.ok) {
|
|
|
|
| 23 |
<p class="text-gray-400 text-sm -mt-4">Paste your raw notes and get a structured report in seconds.</p>
|
| 24 |
|
| 25 |
<div class="w-full max-w-3xl flex flex-col gap-3">
|
| 26 |
+
<label for="prompt" class="text-sm font-medium text-gray-300">Conference Notes</label>
|
| 27 |
<textarea
|
| 28 |
+
id="prompt"
|
| 29 |
rows="10"
|
| 30 |
placeholder="Paste your raw conference notes here..."
|
| 31 |
class="w-full rounded-xl border border-gray-700 bg-gray-900 text-gray-100
|
|
|
|
| 53 |
<script>
|
| 54 |
marked.use({ breaks: true });
|
| 55 |
|
| 56 |
+
const promptEl = document.getElementById('prompt');
|
| 57 |
const btn = document.getElementById('generateBtn');
|
| 58 |
const panel = document.getElementById('outputPanel');
|
| 59 |
const outputEl = document.getElementById('output');
|
| 60 |
const statusEl = document.getElementById('status');
|
| 61 |
|
| 62 |
btn.addEventListener('click', async () => {
|
| 63 |
+
const prompt = promptEl.value.trim();
|
| 64 |
+
if (!prompt) return;
|
| 65 |
|
| 66 |
btn.disabled = true;
|
| 67 |
panel.classList.remove('hidden');
|
|
|
|
| 74 |
const response = await fetch('/agent', {
|
| 75 |
method: 'POST',
|
| 76 |
headers: { 'Content-Type': 'application/json' },
|
| 77 |
+
body: JSON.stringify({ prompt: prompt }),
|
| 78 |
});
|
| 79 |
|
| 80 |
if (!response.ok) {
|
entrypoint.sh
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
set -euo pipefail
|
| 3 |
+
|
| 4 |
+
# Allow Google Drive MCP credentials to be supplied as env var JSON content.
|
| 5 |
+
# This is an alternative to volume-mounting the files (useful for cloud deployments).
|
| 6 |
+
if [ -n "${GOOGLE_DRIVE_OAUTH_KEYS_JSON:-}" ]; then
|
| 7 |
+
echo "$GOOGLE_DRIVE_OAUTH_KEYS_JSON" > /tmp/gcp-oauth.keys.json
|
| 8 |
+
chmod 600 /tmp/gcp-oauth.keys.json
|
| 9 |
+
export GOOGLE_DRIVE_OAUTH_CREDENTIALS=/tmp/gcp-oauth.keys.json
|
| 10 |
+
fi
|
| 11 |
+
|
| 12 |
+
if [ -n "${GOOGLE_DRIVE_TOKENS_JSON:-}" ]; then
|
| 13 |
+
echo "$GOOGLE_DRIVE_TOKENS_JSON" > /tmp/google-drive-mcp-tokens.json
|
| 14 |
+
chmod 600 /tmp/google-drive-mcp-tokens.json
|
| 15 |
+
export GOOGLE_DRIVE_MCP_TOKEN_PATH=/tmp/google-drive-mcp-tokens.json
|
| 16 |
+
fi
|
| 17 |
+
|
| 18 |
+
# Start Google Drive MCP server in background
|
| 19 |
+
google-drive-mcp start --transport http --port 3100 --host 127.0.0.1 > /var/log/google-drive-mcp.log 2>&1 &
|
| 20 |
+
echo "Google Drive MCP server started (PID $!)"
|
| 21 |
+
|
| 22 |
+
# Start FastAPI app in foreground
|
| 23 |
+
exec uv run uvicorn app.api:app --host 0.0.0.0 --port 7860
|
pyproject.toml
CHANGED
|
@@ -5,5 +5,6 @@ requires-python = ">=3.14"
|
|
| 5 |
dependencies = [
|
| 6 |
"fastapi[standard]>=0.134.0",
|
| 7 |
"haystack-ai>=2.27.0",
|
|
|
|
| 8 |
"nvidia-haystack>=1.1.0",
|
| 9 |
]
|
|
|
|
| 5 |
dependencies = [
|
| 6 |
"fastapi[standard]>=0.134.0",
|
| 7 |
"haystack-ai>=2.27.0",
|
| 8 |
+
"mcp-haystack>=1.3.0",
|
| 9 |
"nvidia-haystack>=1.1.0",
|
| 10 |
]
|
run.sh
CHANGED
|
@@ -3,6 +3,13 @@ set -euo pipefail
|
|
| 3 |
|
| 4 |
IMAGE_NAME="post-conference-report-demo"
|
| 5 |
PORT=7860
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
docker build -t "$IMAGE_NAME" .
|
| 8 |
-
docker run --rm -p "$PORT:$PORT" --env-file .env "$IMAGE_NAME"
|
|
|
|
| 3 |
|
| 4 |
IMAGE_NAME="post-conference-report-demo"
|
| 5 |
PORT=7860
|
| 6 |
+
MCP_CONFIG_DIR="$HOME/.config/google-drive-mcp"
|
| 7 |
+
|
| 8 |
+
MOUNTS=()
|
| 9 |
+
[ -f "$MCP_CONFIG_DIR/gcp-oauth.keys.json" ] && \
|
| 10 |
+
MOUNTS+=(-v "$MCP_CONFIG_DIR/gcp-oauth.keys.json:/root/.config/google-drive-mcp/gcp-oauth.keys.json:ro")
|
| 11 |
+
[ -f "$MCP_CONFIG_DIR/tokens.json" ] && \
|
| 12 |
+
MOUNTS+=(-v "$MCP_CONFIG_DIR/tokens.json:/root/.config/google-drive-mcp/tokens.json")
|
| 13 |
|
| 14 |
docker build -t "$IMAGE_NAME" .
|
| 15 |
+
docker run --rm -p "$PORT:$PORT" --env-file .env "${MOUNTS[@]+"${MOUNTS[@]}"}" "$IMAGE_NAME"
|
uv.lock
CHANGED
|
@@ -59,6 +59,39 @@ wheels = [
|
|
| 59 |
{ url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" },
|
| 60 |
]
|
| 61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
[[package]]
|
| 63 |
name = "charset-normalizer"
|
| 64 |
version = "3.4.7"
|
|
@@ -121,6 +154,59 @@ wheels = [
|
|
| 121 |
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
| 122 |
]
|
| 123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
[[package]]
|
| 125 |
name = "distro"
|
| 126 |
version = "1.9.0"
|
|
@@ -161,6 +247,15 @@ wheels = [
|
|
| 161 |
{ url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" },
|
| 162 |
]
|
| 163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
[[package]]
|
| 165 |
name = "fastapi"
|
| 166 |
version = "0.135.3"
|
|
@@ -371,6 +466,15 @@ wheels = [
|
|
| 371 |
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
|
| 372 |
]
|
| 373 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 374 |
[[package]]
|
| 375 |
name = "idna"
|
| 376 |
version = "3.11"
|
|
@@ -505,6 +609,46 @@ wheels = [
|
|
| 505 |
{ url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" },
|
| 506 |
]
|
| 507 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 508 |
[[package]]
|
| 509 |
name = "mdurl"
|
| 510 |
version = "0.1.2"
|
|
@@ -601,6 +745,7 @@ source = { virtual = "." }
|
|
| 601 |
dependencies = [
|
| 602 |
{ name = "fastapi", extra = ["standard"] },
|
| 603 |
{ name = "haystack-ai" },
|
|
|
|
| 604 |
{ name = "nvidia-haystack" },
|
| 605 |
]
|
| 606 |
|
|
@@ -608,6 +753,7 @@ dependencies = [
|
|
| 608 |
requires-dist = [
|
| 609 |
{ name = "fastapi", extras = ["standard"], specifier = ">=0.134.0" },
|
| 610 |
{ name = "haystack-ai", specifier = ">=2.27.0" },
|
|
|
|
| 611 |
{ name = "nvidia-haystack", specifier = ">=1.1.0" },
|
| 612 |
]
|
| 613 |
|
|
@@ -628,6 +774,15 @@ wheels = [
|
|
| 628 |
{ url = "https://files.pythonhosted.org/packages/12/cc/ddec4c8bfa52d966c4f8447422758c1a4f03c3a6e7f0ddccca0dadc107b8/posthog-7.11.1-py3-none-any.whl", hash = "sha256:aa92568b3ebfc2c97733452cf1cb5ef6acfeeb48efcf5e934f1b595d12034bcc", size = 219958, upload-time = "2026-04-14T11:04:42.445Z" },
|
| 629 |
]
|
| 630 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 631 |
[[package]]
|
| 632 |
name = "pydantic"
|
| 633 |
version = "2.13.0"
|
|
@@ -725,6 +880,20 @@ wheels = [
|
|
| 725 |
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
|
| 726 |
]
|
| 727 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 728 |
[[package]]
|
| 729 |
name = "python-dateutil"
|
| 730 |
version = "2.9.0.post0"
|
|
@@ -755,6 +924,16 @@ wheels = [
|
|
| 755 |
{ url = "https://files.pythonhosted.org/packages/9a/22/f1925cdda983ab66fc8ec6ec8014b959262747e58bdca26a4e3d1da29d56/python_multipart-0.0.26-py3-none-any.whl", hash = "sha256:c0b169f8c4484c13b0dcf2ef0ec3a4adb255c4b7d18d8e420477d2b1dd03f185", size = 28847, upload-time = "2026-04-10T14:09:58.131Z" },
|
| 756 |
]
|
| 757 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 758 |
[[package]]
|
| 759 |
name = "pyyaml"
|
| 760 |
version = "6.0.3"
|
|
@@ -951,6 +1130,19 @@ wheels = [
|
|
| 951 |
{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" },
|
| 952 |
]
|
| 953 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 954 |
[[package]]
|
| 955 |
name = "starlette"
|
| 956 |
version = "1.0.0"
|
|
|
|
| 59 |
{ url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" },
|
| 60 |
]
|
| 61 |
|
| 62 |
+
[[package]]
|
| 63 |
+
name = "cffi"
|
| 64 |
+
version = "2.0.0"
|
| 65 |
+
source = { registry = "https://pypi.org/simple" }
|
| 66 |
+
dependencies = [
|
| 67 |
+
{ name = "pycparser", marker = "implementation_name != 'PyPy'" },
|
| 68 |
+
]
|
| 69 |
+
sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" }
|
| 70 |
+
wheels = [
|
| 71 |
+
{ url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" },
|
| 72 |
+
{ url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" },
|
| 73 |
+
{ url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" },
|
| 74 |
+
{ url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" },
|
| 75 |
+
{ url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" },
|
| 76 |
+
{ url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" },
|
| 77 |
+
{ url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" },
|
| 78 |
+
{ url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" },
|
| 79 |
+
{ url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" },
|
| 80 |
+
{ url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" },
|
| 81 |
+
{ url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" },
|
| 82 |
+
{ url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" },
|
| 83 |
+
{ url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" },
|
| 84 |
+
{ url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" },
|
| 85 |
+
{ url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" },
|
| 86 |
+
{ url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" },
|
| 87 |
+
{ url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" },
|
| 88 |
+
{ url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" },
|
| 89 |
+
{ url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" },
|
| 90 |
+
{ url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" },
|
| 91 |
+
{ url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" },
|
| 92 |
+
{ url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
|
| 93 |
+
]
|
| 94 |
+
|
| 95 |
[[package]]
|
| 96 |
name = "charset-normalizer"
|
| 97 |
version = "3.4.7"
|
|
|
|
| 154 |
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
| 155 |
]
|
| 156 |
|
| 157 |
+
[[package]]
|
| 158 |
+
name = "cryptography"
|
| 159 |
+
version = "46.0.7"
|
| 160 |
+
source = { registry = "https://pypi.org/simple" }
|
| 161 |
+
dependencies = [
|
| 162 |
+
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
| 163 |
+
]
|
| 164 |
+
sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5", size = 750652, upload-time = "2026-04-08T01:57:54.692Z" }
|
| 165 |
+
wheels = [
|
| 166 |
+
{ url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4", size = 7179869, upload-time = "2026-04-08T01:56:17.157Z" },
|
| 167 |
+
{ url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325", size = 4275492, upload-time = "2026-04-08T01:56:19.36Z" },
|
| 168 |
+
{ url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308", size = 4426670, upload-time = "2026-04-08T01:56:21.415Z" },
|
| 169 |
+
{ url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77", size = 4280275, upload-time = "2026-04-08T01:56:23.539Z" },
|
| 170 |
+
{ url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1", size = 4928402, upload-time = "2026-04-08T01:56:25.624Z" },
|
| 171 |
+
{ url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef", size = 4459985, upload-time = "2026-04-08T01:56:27.309Z" },
|
| 172 |
+
{ url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de", size = 3990652, upload-time = "2026-04-08T01:56:29.095Z" },
|
| 173 |
+
{ url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83", size = 4279805, upload-time = "2026-04-08T01:56:30.928Z" },
|
| 174 |
+
{ url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb", size = 4892883, upload-time = "2026-04-08T01:56:32.614Z" },
|
| 175 |
+
{ url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b", size = 4459756, upload-time = "2026-04-08T01:56:34.306Z" },
|
| 176 |
+
{ url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85", size = 4410244, upload-time = "2026-04-08T01:56:35.977Z" },
|
| 177 |
+
{ url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e", size = 4674868, upload-time = "2026-04-08T01:56:38.034Z" },
|
| 178 |
+
{ url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457", size = 3026504, upload-time = "2026-04-08T01:56:39.666Z" },
|
| 179 |
+
{ url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b", size = 3488363, upload-time = "2026-04-08T01:56:41.893Z" },
|
| 180 |
+
{ url = "https://files.pythonhosted.org/packages/7b/56/15619b210e689c5403bb0540e4cb7dbf11a6bf42e483b7644e471a2812b3/cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842", size = 7119671, upload-time = "2026-04-08T01:56:44Z" },
|
| 181 |
+
{ url = "https://files.pythonhosted.org/packages/74/66/e3ce040721b0b5599e175ba91ab08884c75928fbeb74597dd10ef13505d2/cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c", size = 4268551, upload-time = "2026-04-08T01:56:46.071Z" },
|
| 182 |
+
{ url = "https://files.pythonhosted.org/packages/03/11/5e395f961d6868269835dee1bafec6a1ac176505a167f68b7d8818431068/cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902", size = 4408887, upload-time = "2026-04-08T01:56:47.718Z" },
|
| 183 |
+
{ url = "https://files.pythonhosted.org/packages/40/53/8ed1cf4c3b9c8e611e7122fb56f1c32d09e1fff0f1d77e78d9ff7c82653e/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d", size = 4271354, upload-time = "2026-04-08T01:56:49.312Z" },
|
| 184 |
+
{ url = "https://files.pythonhosted.org/packages/50/46/cf71e26025c2e767c5609162c866a78e8a2915bbcfa408b7ca495c6140c4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022", size = 4905845, upload-time = "2026-04-08T01:56:50.916Z" },
|
| 185 |
+
{ url = "https://files.pythonhosted.org/packages/c0/ea/01276740375bac6249d0a971ebdf6b4dc9ead0ee0a34ef3b5a88c1a9b0d4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce", size = 4444641, upload-time = "2026-04-08T01:56:52.882Z" },
|
| 186 |
+
{ url = "https://files.pythonhosted.org/packages/3d/4c/7d258f169ae71230f25d9f3d06caabcff8c3baf0978e2b7d65e0acac3827/cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f", size = 3967749, upload-time = "2026-04-08T01:56:54.597Z" },
|
| 187 |
+
{ url = "https://files.pythonhosted.org/packages/b5/2a/2ea0767cad19e71b3530e4cad9605d0b5e338b6a1e72c37c9c1ceb86c333/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99", size = 4270942, upload-time = "2026-04-08T01:56:56.416Z" },
|
| 188 |
+
{ url = "https://files.pythonhosted.org/packages/41/3d/fe14df95a83319af25717677e956567a105bb6ab25641acaa093db79975d/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1", size = 4871079, upload-time = "2026-04-08T01:56:58.31Z" },
|
| 189 |
+
{ url = "https://files.pythonhosted.org/packages/9c/59/4a479e0f36f8f378d397f4eab4c850b4ffb79a2f0d58704b8fa0703ddc11/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2", size = 4443999, upload-time = "2026-04-08T01:57:00.508Z" },
|
| 190 |
+
{ url = "https://files.pythonhosted.org/packages/28/17/b59a741645822ec6d04732b43c5d35e4ef58be7bfa84a81e5ae6f05a1d33/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e", size = 4399191, upload-time = "2026-04-08T01:57:02.654Z" },
|
| 191 |
+
{ url = "https://files.pythonhosted.org/packages/59/6a/bb2e166d6d0e0955f1e9ff70f10ec4b2824c9cfcdb4da772c7dd69cc7d80/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee", size = 4655782, upload-time = "2026-04-08T01:57:04.592Z" },
|
| 192 |
+
{ url = "https://files.pythonhosted.org/packages/95/b6/3da51d48415bcb63b00dc17c2eff3a651b7c4fed484308d0f19b30e8cb2c/cryptography-46.0.7-cp314-cp314t-win32.whl", hash = "sha256:fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298", size = 3002227, upload-time = "2026-04-08T01:57:06.91Z" },
|
| 193 |
+
{ url = "https://files.pythonhosted.org/packages/32/a8/9f0e4ed57ec9cebe506e58db11ae472972ecb0c659e4d52bbaee80ca340a/cryptography-46.0.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb", size = 3475332, upload-time = "2026-04-08T01:57:08.807Z" },
|
| 194 |
+
{ url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4", size = 7165618, upload-time = "2026-04-08T01:57:10.645Z" },
|
| 195 |
+
{ url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7", size = 4270628, upload-time = "2026-04-08T01:57:12.885Z" },
|
| 196 |
+
{ url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832", size = 4415405, upload-time = "2026-04-08T01:57:14.923Z" },
|
| 197 |
+
{ url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163", size = 4272715, upload-time = "2026-04-08T01:57:16.638Z" },
|
| 198 |
+
{ url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2", size = 4918400, upload-time = "2026-04-08T01:57:19.021Z" },
|
| 199 |
+
{ url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067", size = 4450634, upload-time = "2026-04-08T01:57:21.185Z" },
|
| 200 |
+
{ url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0", size = 3985233, upload-time = "2026-04-08T01:57:22.862Z" },
|
| 201 |
+
{ url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba", size = 4271955, upload-time = "2026-04-08T01:57:24.814Z" },
|
| 202 |
+
{ url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006", size = 4879888, upload-time = "2026-04-08T01:57:26.88Z" },
|
| 203 |
+
{ url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0", size = 4449961, upload-time = "2026-04-08T01:57:29.068Z" },
|
| 204 |
+
{ url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85", size = 4401696, upload-time = "2026-04-08T01:57:31.029Z" },
|
| 205 |
+
{ url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" },
|
| 206 |
+
{ url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246", size = 3013001, upload-time = "2026-04-08T01:57:34.933Z" },
|
| 207 |
+
{ url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3", size = 3472985, upload-time = "2026-04-08T01:57:36.714Z" },
|
| 208 |
+
]
|
| 209 |
+
|
| 210 |
[[package]]
|
| 211 |
name = "distro"
|
| 212 |
version = "1.9.0"
|
|
|
|
| 247 |
{ url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" },
|
| 248 |
]
|
| 249 |
|
| 250 |
+
[[package]]
|
| 251 |
+
name = "exceptiongroup"
|
| 252 |
+
version = "1.3.1"
|
| 253 |
+
source = { registry = "https://pypi.org/simple" }
|
| 254 |
+
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
|
| 255 |
+
wheels = [
|
| 256 |
+
{ url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
|
| 257 |
+
]
|
| 258 |
+
|
| 259 |
[[package]]
|
| 260 |
name = "fastapi"
|
| 261 |
version = "0.135.3"
|
|
|
|
| 466 |
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
|
| 467 |
]
|
| 468 |
|
| 469 |
+
[[package]]
|
| 470 |
+
name = "httpx-sse"
|
| 471 |
+
version = "0.4.3"
|
| 472 |
+
source = { registry = "https://pypi.org/simple" }
|
| 473 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943, upload-time = "2025-10-10T21:48:22.271Z" }
|
| 474 |
+
wheels = [
|
| 475 |
+
{ url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" },
|
| 476 |
+
]
|
| 477 |
+
|
| 478 |
[[package]]
|
| 479 |
name = "idna"
|
| 480 |
version = "3.11"
|
|
|
|
| 609 |
{ url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" },
|
| 610 |
]
|
| 611 |
|
| 612 |
+
[[package]]
|
| 613 |
+
name = "mcp"
|
| 614 |
+
version = "1.27.0"
|
| 615 |
+
source = { registry = "https://pypi.org/simple" }
|
| 616 |
+
dependencies = [
|
| 617 |
+
{ name = "anyio" },
|
| 618 |
+
{ name = "httpx" },
|
| 619 |
+
{ name = "httpx-sse" },
|
| 620 |
+
{ name = "jsonschema" },
|
| 621 |
+
{ name = "pydantic" },
|
| 622 |
+
{ name = "pydantic-settings" },
|
| 623 |
+
{ name = "pyjwt", extra = ["crypto"] },
|
| 624 |
+
{ name = "python-multipart" },
|
| 625 |
+
{ name = "pywin32", marker = "sys_platform == 'win32'" },
|
| 626 |
+
{ name = "sse-starlette" },
|
| 627 |
+
{ name = "starlette" },
|
| 628 |
+
{ name = "typing-extensions" },
|
| 629 |
+
{ name = "typing-inspection" },
|
| 630 |
+
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
| 631 |
+
]
|
| 632 |
+
sdist = { url = "https://files.pythonhosted.org/packages/8b/eb/c0cfc62075dc6e1ec1c64d352ae09ac051d9334311ed226f1f425312848a/mcp-1.27.0.tar.gz", hash = "sha256:d3dc35a7eec0d458c1da4976a48f982097ddaab87e278c5511d5a4a56e852b83", size = 607509, upload-time = "2026-04-02T14:48:08.88Z" }
|
| 633 |
+
wheels = [
|
| 634 |
+
{ url = "https://files.pythonhosted.org/packages/9c/46/f6b4ad632c67ef35209a66127e4bddc95759649dd595f71f13fba11bdf9a/mcp-1.27.0-py3-none-any.whl", hash = "sha256:5ce1fa81614958e267b21fb2aa34e0aea8e2c6ede60d52aba45fd47246b4d741", size = 215967, upload-time = "2026-04-02T14:48:07.24Z" },
|
| 635 |
+
]
|
| 636 |
+
|
| 637 |
+
[[package]]
|
| 638 |
+
name = "mcp-haystack"
|
| 639 |
+
version = "1.3.0"
|
| 640 |
+
source = { registry = "https://pypi.org/simple" }
|
| 641 |
+
dependencies = [
|
| 642 |
+
{ name = "exceptiongroup" },
|
| 643 |
+
{ name = "haystack-ai" },
|
| 644 |
+
{ name = "httpx" },
|
| 645 |
+
{ name = "mcp" },
|
| 646 |
+
]
|
| 647 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6a/86/ea0e75e0ec0d3ecc4f4f9ab2594ebd00c9021fa9b0a3c020bc93c808728b/mcp_haystack-1.3.0.tar.gz", hash = "sha256:7459c111d436e2e25002469a44cc7a5f67578fe5233d123c33e847b6c769bd61", size = 47699, upload-time = "2026-03-24T10:02:38.362Z" }
|
| 648 |
+
wheels = [
|
| 649 |
+
{ url = "https://files.pythonhosted.org/packages/b6/be/2e8473019e66f79b1248aa1776898f96981b71ee034902a13132b01b578b/mcp_haystack-1.3.0-py3-none-any.whl", hash = "sha256:76828b4653ec2e9dcd69c0b1ab6d595b29964200d17c4716e6967228d9fde3ac", size = 26291, upload-time = "2026-03-24T10:02:39.503Z" },
|
| 650 |
+
]
|
| 651 |
+
|
| 652 |
[[package]]
|
| 653 |
name = "mdurl"
|
| 654 |
version = "0.1.2"
|
|
|
|
| 745 |
dependencies = [
|
| 746 |
{ name = "fastapi", extra = ["standard"] },
|
| 747 |
{ name = "haystack-ai" },
|
| 748 |
+
{ name = "mcp-haystack" },
|
| 749 |
{ name = "nvidia-haystack" },
|
| 750 |
]
|
| 751 |
|
|
|
|
| 753 |
requires-dist = [
|
| 754 |
{ name = "fastapi", extras = ["standard"], specifier = ">=0.134.0" },
|
| 755 |
{ name = "haystack-ai", specifier = ">=2.27.0" },
|
| 756 |
+
{ name = "mcp-haystack", specifier = ">=1.3.0" },
|
| 757 |
{ name = "nvidia-haystack", specifier = ">=1.1.0" },
|
| 758 |
]
|
| 759 |
|
|
|
|
| 774 |
{ url = "https://files.pythonhosted.org/packages/12/cc/ddec4c8bfa52d966c4f8447422758c1a4f03c3a6e7f0ddccca0dadc107b8/posthog-7.11.1-py3-none-any.whl", hash = "sha256:aa92568b3ebfc2c97733452cf1cb5ef6acfeeb48efcf5e934f1b595d12034bcc", size = 219958, upload-time = "2026-04-14T11:04:42.445Z" },
|
| 775 |
]
|
| 776 |
|
| 777 |
+
[[package]]
|
| 778 |
+
name = "pycparser"
|
| 779 |
+
version = "3.0"
|
| 780 |
+
source = { registry = "https://pypi.org/simple" }
|
| 781 |
+
sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" }
|
| 782 |
+
wheels = [
|
| 783 |
+
{ url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" },
|
| 784 |
+
]
|
| 785 |
+
|
| 786 |
[[package]]
|
| 787 |
name = "pydantic"
|
| 788 |
version = "2.13.0"
|
|
|
|
| 880 |
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
|
| 881 |
]
|
| 882 |
|
| 883 |
+
[[package]]
|
| 884 |
+
name = "pyjwt"
|
| 885 |
+
version = "2.12.1"
|
| 886 |
+
source = { registry = "https://pypi.org/simple" }
|
| 887 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c2/27/a3b6e5bf6ff856d2509292e95c8f57f0df7017cf5394921fc4e4ef40308a/pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b", size = 102564, upload-time = "2026-03-13T19:27:37.25Z" }
|
| 888 |
+
wheels = [
|
| 889 |
+
{ url = "https://files.pythonhosted.org/packages/e5/7a/8dd906bd22e79e47397a61742927f6747fe93242ef86645ee9092e610244/pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c", size = 29726, upload-time = "2026-03-13T19:27:35.677Z" },
|
| 890 |
+
]
|
| 891 |
+
|
| 892 |
+
[package.optional-dependencies]
|
| 893 |
+
crypto = [
|
| 894 |
+
{ name = "cryptography" },
|
| 895 |
+
]
|
| 896 |
+
|
| 897 |
[[package]]
|
| 898 |
name = "python-dateutil"
|
| 899 |
version = "2.9.0.post0"
|
|
|
|
| 924 |
{ url = "https://files.pythonhosted.org/packages/9a/22/f1925cdda983ab66fc8ec6ec8014b959262747e58bdca26a4e3d1da29d56/python_multipart-0.0.26-py3-none-any.whl", hash = "sha256:c0b169f8c4484c13b0dcf2ef0ec3a4adb255c4b7d18d8e420477d2b1dd03f185", size = 28847, upload-time = "2026-04-10T14:09:58.131Z" },
|
| 925 |
]
|
| 926 |
|
| 927 |
+
[[package]]
|
| 928 |
+
name = "pywin32"
|
| 929 |
+
version = "311"
|
| 930 |
+
source = { registry = "https://pypi.org/simple" }
|
| 931 |
+
wheels = [
|
| 932 |
+
{ url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" },
|
| 933 |
+
{ url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" },
|
| 934 |
+
{ url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" },
|
| 935 |
+
]
|
| 936 |
+
|
| 937 |
[[package]]
|
| 938 |
name = "pyyaml"
|
| 939 |
version = "6.0.3"
|
|
|
|
| 1130 |
{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" },
|
| 1131 |
]
|
| 1132 |
|
| 1133 |
+
[[package]]
|
| 1134 |
+
name = "sse-starlette"
|
| 1135 |
+
version = "3.3.4"
|
| 1136 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1137 |
+
dependencies = [
|
| 1138 |
+
{ name = "anyio" },
|
| 1139 |
+
{ name = "starlette" },
|
| 1140 |
+
]
|
| 1141 |
+
sdist = { url = "https://files.pythonhosted.org/packages/26/8c/f9290339ef6d79badbc010f067cd769d6601ec11a57d78569c683fb4dd87/sse_starlette-3.3.4.tar.gz", hash = "sha256:aaf92fc067af8a5427192895ac028e947b484ac01edbc3caf00e7e7137c7bef1", size = 32427, upload-time = "2026-03-29T09:00:23.307Z" }
|
| 1142 |
+
wheels = [
|
| 1143 |
+
{ url = "https://files.pythonhosted.org/packages/f8/7f/3de5402f39890ac5660b86bcf5c03f9d855dad5c4ed764866d7b592b46fd/sse_starlette-3.3.4-py3-none-any.whl", hash = "sha256:84bb06e58939a8b38d8341f1bc9792f06c2b53f48c608dd207582b664fc8f3c1", size = 14330, upload-time = "2026-03-29T09:00:21.846Z" },
|
| 1144 |
+
]
|
| 1145 |
+
|
| 1146 |
[[package]]
|
| 1147 |
name = "starlette"
|
| 1148 |
version = "1.0.0"
|