Spaces:
Sleeping
Sleeping
Configure for 100% self-contained CPU deployment
Browse files- Dockerfile +43 -0
- backend/constants.py +31 -24
- backend/engines/embedding.py +34 -19
- backend/engines/llm_client.py +47 -8
- backend/main.py +2 -1
- backend/rate_limiter.py +48 -0
- backend/routers/retrieval_router.py +35 -14
- frontend/app.js +91 -11
- frontend/index.html +3 -2
- frontend/styles.css +65 -0
- pyproject.toml +2 -1
- uv.lock +485 -30
Dockerfile
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.11-slim
|
| 2 |
+
|
| 3 |
+
WORKDIR /app
|
| 4 |
+
|
| 5 |
+
# Set Hugging Face cache directory to a build-in writeable directory
|
| 6 |
+
ENV HF_HOME=/app/.cache/huggingface
|
| 7 |
+
# Tell NLTK where to find downloaded data
|
| 8 |
+
ENV NLTK_DATA=/app/nltk_data
|
| 9 |
+
|
| 10 |
+
# Install system deps for numpy/umap
|
| 11 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 12 |
+
build-essential gcc && \
|
| 13 |
+
rm -rf /var/lib/apt/lists/*
|
| 14 |
+
|
| 15 |
+
# Copy and install Python deps
|
| 16 |
+
COPY pyproject.toml .
|
| 17 |
+
RUN pip install --no-cache-dir .
|
| 18 |
+
|
| 19 |
+
# Pre-download NLTK data at build time to the app-owned directory
|
| 20 |
+
RUN mkdir -p /app/nltk_data && \
|
| 21 |
+
python -c "import nltk; nltk.download('punkt', download_dir='/app/nltk_data'); nltk.download('punkt_tab', download_dir='/app/nltk_data'); nltk.download('stopwords', download_dir='/app/nltk_data')"
|
| 22 |
+
|
| 23 |
+
# Pre-download HF embedding models at build time
|
| 24 |
+
RUN python -c "from sentence_transformers import SentenceTransformer; \
|
| 25 |
+
SentenceTransformer('nomic-ai/nomic-embed-text-v1.5', trust_remote_code=True); \
|
| 26 |
+
SentenceTransformer('google/gemma-3n-embedding-exp', trust_remote_code=True); \
|
| 27 |
+
SentenceTransformer('Qwen/Qwen3-Embedding-0.6B', trust_remote_code=True)"
|
| 28 |
+
|
| 29 |
+
# Pre-download HF Qwen LLM model at build time
|
| 30 |
+
RUN python -c "from transformers import AutoTokenizer, AutoModelForCausalLM; \
|
| 31 |
+
AutoTokenizer.from_pretrained('Qwen/Qwen2.5-1.5B-Instruct'); \
|
| 32 |
+
AutoModelForCausalLM.from_pretrained('Qwen/Qwen2.5-1.5B-Instruct')"
|
| 33 |
+
|
| 34 |
+
# Copy app code
|
| 35 |
+
COPY . .
|
| 36 |
+
|
| 37 |
+
# Grant full read/write/execute permissions on /app for non-root containers in Hugging Face
|
| 38 |
+
RUN chmod -R 777 /app
|
| 39 |
+
|
| 40 |
+
# HF Spaces expects port 7860
|
| 41 |
+
EXPOSE 7860
|
| 42 |
+
|
| 43 |
+
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "7860"]
|
backend/constants.py
CHANGED
|
@@ -9,24 +9,24 @@ The chunks are labelled "Chunk A" and "Chunk B". You must ignore any model names
|
|
| 9 |
Score each dimension independently. Do not let one dimension influence another.
|
| 10 |
|
| 11 |
1. Query Relevance
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
|
| 16 |
2. Answer Completeness
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
|
| 21 |
3. Factual Plausibility
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
|
| 27 |
4. Clarity & Parsability
|
| 28 |
-
|
| 29 |
-
|
| 30 |
|
| 31 |
# OVERALL SCORE
|
| 32 |
overall = (relevance + completeness + plausibility + clarity) / 4
|
|
@@ -58,28 +58,28 @@ Search Query: {search_query}
|
|
| 58 |
# OUTPUT RULE
|
| 59 |
OUTPUT: respond with this exact JSON structure and nothing else:
|
| 60 |
{{
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
"query_relevance": int,
|
| 65 |
"answer_completeness": int,
|
| 66 |
"factual_plausibility": int,
|
| 67 |
"clarity": int,
|
| 68 |
"overall": float
|
| 69 |
-
|
| 70 |
-
|
| 71 |
"query_relevance": int,
|
| 72 |
"answer_completeness": int,
|
| 73 |
"factual_plausibility": int,
|
| 74 |
"clarity": int,
|
| 75 |
"overall": float
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
}}
|
| 84 |
"""
|
| 85 |
|
|
@@ -91,3 +91,10 @@ Match the tone and vocabulary a subject-matter expert would use when writing abo
|
|
| 91 |
Query: {search_text}
|
| 92 |
|
| 93 |
Passage:"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
Score each dimension independently. Do not let one dimension influence another.
|
| 10 |
|
| 11 |
1. Query Relevance
|
| 12 |
+
Does the chunk directly address the specific question asked?
|
| 13 |
+
10 = precisely on-topic, 1 = entirely off-topic.
|
| 14 |
+
Penalise chunks that are topically adjacent but don't answer the actual query.
|
| 15 |
|
| 16 |
2. Answer Completeness
|
| 17 |
+
Is the answer self-contained within the chunk, or does it trail off / require external context?
|
| 18 |
+
10 = standalone complete answer, 1 = fragment with no usable answer.
|
| 19 |
+
Do NOT reward length. A concise, complete answer scores higher than a verbose partial one.
|
| 20 |
|
| 21 |
3. Factual Plausibility
|
| 22 |
+
Based on your knowledge, does the chunk contain accurate, internally consistent information?
|
| 23 |
+
10 = no detectable errors, 1 = clearly wrong or contradictory.
|
| 24 |
+
If you cannot verify a claim, score conservatively (5–6) rather than assuming correctness.
|
| 25 |
+
Do not penalise a chunk for information you simply don't recognise.
|
| 26 |
|
| 27 |
4. Clarity & Parsability
|
| 28 |
+
Is the chunk clean, readable, and free from noise (broken formatting, encoding artefacts, truncation mid-sentence)?
|
| 29 |
+
10 = polished and easy to parse, 1 = heavily noisy or unreadable.
|
| 30 |
|
| 31 |
# OVERALL SCORE
|
| 32 |
overall = (relevance + completeness + plausibility + clarity) / 4
|
|
|
|
| 58 |
# OUTPUT RULE
|
| 59 |
OUTPUT: respond with this exact JSON structure and nothing else:
|
| 60 |
{{
|
| 61 |
+
"winner": "chunk_a" | "chunk_b" | "tie",
|
| 62 |
+
"confidence": float,
|
| 63 |
+
"chunk_a_score": {{
|
| 64 |
"query_relevance": int,
|
| 65 |
"answer_completeness": int,
|
| 66 |
"factual_plausibility": int,
|
| 67 |
"clarity": int,
|
| 68 |
"overall": float
|
| 69 |
+
}},
|
| 70 |
+
"chunk_b_score": {{
|
| 71 |
"query_relevance": int,
|
| 72 |
"answer_completeness": int,
|
| 73 |
"factual_plausibility": int,
|
| 74 |
"clarity": int,
|
| 75 |
"overall": float
|
| 76 |
+
}},
|
| 77 |
+
"winner_reason": "2-3 sentences",
|
| 78 |
+
"deciding_dimension": "e.g. query_relevance",
|
| 79 |
+
"chunk_a_strengths": ["..."],
|
| 80 |
+
"chunk_a_weaknesses": ["..."],
|
| 81 |
+
"chunk_b_strengths": ["..."],
|
| 82 |
+
"chunk_b_weaknesses": ["..."]
|
| 83 |
}}
|
| 84 |
"""
|
| 85 |
|
|
|
|
| 91 |
Query: {search_text}
|
| 92 |
|
| 93 |
Passage:"""
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
MODEL_MAP = {
|
| 97 |
+
"nomic-embed-text": "nomic-ai/nomic-embed-text-v1.5",
|
| 98 |
+
"EmbeddingGemma": "google/gemma-3n-embedding-exp",
|
| 99 |
+
"qwen3-embedding:0.6b": "Qwen/Qwen3-Embedding-0.6B",
|
| 100 |
+
}
|
backend/engines/embedding.py
CHANGED
|
@@ -1,29 +1,44 @@
|
|
| 1 |
from typing import Sequence
|
| 2 |
-
import httpx
|
| 3 |
|
| 4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
|
| 7 |
class EmbeddingEngine:
|
| 8 |
def __init__(self, embedding_model):
|
| 9 |
self.embedding_model = embedding_model
|
| 10 |
-
self.client = httpx.AsyncClient(timeout=60)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
async def generate_embeddings(self, chunks: Sequence[ChunkNode | str]):
|
| 13 |
texts = [c if isinstance(c, str) else c.text for c in chunks]
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
from typing import Sequence
|
|
|
|
| 2 |
|
| 3 |
+
# import httpx
|
| 4 |
+
import os
|
| 5 |
+
from backend.constants import MODEL_MAP
|
| 6 |
+
from backend.models.schemas import ChunkNode
|
| 7 |
+
from sentence_transformers import SentenceTransformer
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
_model_cache = {}
|
| 11 |
|
| 12 |
|
| 13 |
class EmbeddingEngine:
|
| 14 |
def __init__(self, embedding_model):
|
| 15 |
self.embedding_model = embedding_model
|
| 16 |
+
# self.client = httpx.AsyncClient(timeout=60)
|
| 17 |
+
hf_name = MODEL_MAP.get(embedding_model, embedding_model)
|
| 18 |
+
|
| 19 |
+
if hf_name not in _model_cache:
|
| 20 |
+
_model_cache[hf_name] = SentenceTransformer(hf_name, trust_remote_code=True)
|
| 21 |
+
self.model = _model_cache[hf_name]
|
| 22 |
|
| 23 |
async def generate_embeddings(self, chunks: Sequence[ChunkNode | str]):
|
| 24 |
texts = [c if isinstance(c, str) else c.text for c in chunks]
|
| 25 |
+
# commented for using sentence transformer.
|
| 26 |
+
# res = await self.client.post(
|
| 27 |
+
# "http://localhost:11434/api/embed",
|
| 28 |
+
# json={
|
| 29 |
+
# "model": self.embedding_model,
|
| 30 |
+
# "input": texts,
|
| 31 |
+
# },
|
| 32 |
+
# )
|
| 33 |
+
|
| 34 |
+
# res_json = res.json()
|
| 35 |
+
|
| 36 |
+
# if "embeddings" not in res_json or not res_json["embeddings"]:
|
| 37 |
+
# raise ValueError(
|
| 38 |
+
# f"Ollama failed to generate embeddings for {self.embedding_model}. Response: {res_json}"
|
| 39 |
+
# )
|
| 40 |
+
|
| 41 |
+
# return res_json["embeddings"]
|
| 42 |
+
# sentence-transformers is sync, but it's fast on CPU for small batches
|
| 43 |
+
embeddings = self.model.encode(texts, normalize_embeddings=True)
|
| 44 |
+
return embeddings.tolist()
|
backend/engines/llm_client.py
CHANGED
|
@@ -1,17 +1,56 @@
|
|
| 1 |
from typing import Optional
|
| 2 |
-
import
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
|
| 5 |
class OllamaClient:
|
| 6 |
def __init__(self):
|
| 7 |
-
self.
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
async def generate(self, prompt: str, response_format: Optional[str] = "json"):
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
-
if response_format:
|
| 14 |
-
args["format"] = response_format
|
| 15 |
|
| 16 |
-
response = await self.client.generate(**args) # type: ignore
|
| 17 |
-
return response["response"]
|
|
|
|
| 1 |
from typing import Optional
|
| 2 |
+
import torch
|
| 3 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
|
| 4 |
+
|
| 5 |
+
_llm_pipeline = None
|
| 6 |
|
| 7 |
|
| 8 |
class OllamaClient:
|
| 9 |
def __init__(self):
|
| 10 |
+
self.model_name = "Qwen/Qwen2.5-1.5B-Instruct"
|
| 11 |
+
|
| 12 |
+
def _get_pipeline(self):
|
| 13 |
+
global _llm_pipeline
|
| 14 |
+
if _llm_pipeline is None:
|
| 15 |
+
tokenizer = AutoTokenizer.from_pretrained(self.model_name)
|
| 16 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 17 |
+
self.model_name,
|
| 18 |
+
torch_dtype=torch.float32,
|
| 19 |
+
device_map="cpu"
|
| 20 |
+
)
|
| 21 |
+
_llm_pipeline = pipeline(
|
| 22 |
+
"text-generation",
|
| 23 |
+
model=model,
|
| 24 |
+
tokenizer=tokenizer
|
| 25 |
+
)
|
| 26 |
+
return _llm_pipeline
|
| 27 |
|
| 28 |
async def generate(self, prompt: str, response_format: Optional[str] = "json"):
|
| 29 |
+
pipe = self._get_pipeline()
|
| 30 |
+
|
| 31 |
+
messages = [
|
| 32 |
+
{"role": "system", "content": "You are a helpful evaluation referee. Output raw JSON only, matching the exact format requested."},
|
| 33 |
+
{"role": "user", "content": prompt}
|
| 34 |
+
]
|
| 35 |
+
|
| 36 |
+
generation_kwargs = {
|
| 37 |
+
"max_new_tokens": 512,
|
| 38 |
+
"temperature": 0.1,
|
| 39 |
+
"do_sample": False
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
outputs = pipe(messages, **generation_kwargs)
|
| 43 |
+
result_text = outputs[0]["generated_text"][-1]["content"]
|
| 44 |
+
|
| 45 |
+
cleaned_text = result_text.strip()
|
| 46 |
+
if cleaned_text.startswith("```"):
|
| 47 |
+
lines = cleaned_text.splitlines()
|
| 48 |
+
if lines[0].startswith("```"):
|
| 49 |
+
lines = lines[1:]
|
| 50 |
+
if lines and lines[-1].strip() == "```":
|
| 51 |
+
lines = lines[:-1]
|
| 52 |
+
cleaned_text = "\n".join(lines).strip()
|
| 53 |
+
|
| 54 |
+
return cleaned_text
|
| 55 |
|
|
|
|
|
|
|
| 56 |
|
|
|
|
|
|
backend/main.py
CHANGED
|
@@ -8,12 +8,13 @@ from fastapi.responses import FileResponse
|
|
| 8 |
|
| 9 |
|
| 10 |
def initialize_nltk():
|
| 11 |
-
nltk_data_dir = os.path.expanduser("~/nltk_data")
|
| 12 |
os.makedirs(nltk_data_dir, exist_ok=True)
|
| 13 |
|
| 14 |
if nltk_data_dir not in nltk.data.path:
|
| 15 |
nltk.data.path.append(nltk_data_dir)
|
| 16 |
|
|
|
|
| 17 |
resources = {
|
| 18 |
"tokenizers/punkt": "punkt",
|
| 19 |
"tokenizers/punkt_tab": "punkt_tab",
|
|
|
|
| 8 |
|
| 9 |
|
| 10 |
def initialize_nltk():
|
| 11 |
+
nltk_data_dir = os.environ.get("NLTK_DATA", os.path.expanduser("~/nltk_data"))
|
| 12 |
os.makedirs(nltk_data_dir, exist_ok=True)
|
| 13 |
|
| 14 |
if nltk_data_dir not in nltk.data.path:
|
| 15 |
nltk.data.path.append(nltk_data_dir)
|
| 16 |
|
| 17 |
+
|
| 18 |
resources = {
|
| 19 |
"tokenizers/punkt": "punkt",
|
| 20 |
"tokenizers/punkt_tab": "punkt_tab",
|
backend/rate_limiter.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from collections import defaultdict, deque
|
| 2 |
+
from datetime import datetime, timedelta
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
class RateLimiter:
|
| 6 |
+
def __init__(
|
| 7 |
+
self, requests_per_minute=2, violation_threshold=10, ban_duration_minutes=60
|
| 8 |
+
):
|
| 9 |
+
self.requests_per_minute = requests_per_minute
|
| 10 |
+
self.violation_threshold = violation_threshold
|
| 11 |
+
self.ban_duration = timedelta(minutes=ban_duration_minutes)
|
| 12 |
+
|
| 13 |
+
self.requests = defaultdict(deque)
|
| 14 |
+
self.violations = defaultdict(int)
|
| 15 |
+
self.banned_until = {}
|
| 16 |
+
|
| 17 |
+
def allow(self, ip: str) -> bool:
|
| 18 |
+
now = datetime.utcnow()
|
| 19 |
+
|
| 20 |
+
# Check ban
|
| 21 |
+
if ip in self.banned_until:
|
| 22 |
+
if now < self.banned_until[ip]:
|
| 23 |
+
return False
|
| 24 |
+
del self.banned_until[ip]
|
| 25 |
+
|
| 26 |
+
# Remove requests older than 1 minute
|
| 27 |
+
window = now - timedelta(minutes=1)
|
| 28 |
+
reqs = self.requests[ip]
|
| 29 |
+
|
| 30 |
+
while reqs and reqs[0] < window:
|
| 31 |
+
reqs.popleft()
|
| 32 |
+
|
| 33 |
+
# Rate limit hit
|
| 34 |
+
if len(reqs) >= self.requests_per_minute:
|
| 35 |
+
self.violations[ip] += 1
|
| 36 |
+
|
| 37 |
+
if self.violations[ip] >= self.violation_threshold:
|
| 38 |
+
self.banned_until[ip] = now + self.ban_duration
|
| 39 |
+
|
| 40 |
+
return False
|
| 41 |
+
|
| 42 |
+
reqs.append(now)
|
| 43 |
+
return True
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
limiter = RateLimiter(
|
| 47 |
+
requests_per_minute=5, violation_threshold=10, ban_duration_minutes=60
|
| 48 |
+
)
|
backend/routers/retrieval_router.py
CHANGED
|
@@ -4,10 +4,12 @@ from backend.engines.llm_client import OllamaClient
|
|
| 4 |
from backend.constants import system_instructions
|
| 5 |
import asyncio
|
| 6 |
from typing import Any, Dict, List, Optional
|
| 7 |
-
from fastapi import APIRouter
|
| 8 |
import json
|
| 9 |
from backend.engines.embedding import EmbeddingEngine
|
| 10 |
from backend.engines.reducer import ReducerEngine
|
|
|
|
|
|
|
| 11 |
from backend.models.schemas import (
|
| 12 |
CompareRequest,
|
| 13 |
CompareResponse,
|
|
@@ -25,13 +27,19 @@ router = APIRouter(prefix="/api", tags=["retrieval"])
|
|
| 25 |
|
| 26 |
|
| 27 |
@router.post("/retrieve", response_model=QueryResponse)
|
| 28 |
-
async def retrieve(request: QueryRequest):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
-
search_text = (
|
| 31 |
-
await get_hyde_text(request.search_text)
|
| 32 |
-
if request.use_hyde
|
| 33 |
-
else request.search_text
|
| 34 |
-
)
|
| 35 |
|
| 36 |
limit = request.top_k * 4 if request.use_reranking else request.top_k
|
| 37 |
|
|
@@ -69,12 +77,18 @@ async def retrieve(request: QueryRequest):
|
|
| 69 |
|
| 70 |
|
| 71 |
@router.post("/compare", response_model=CompareResponse)
|
| 72 |
-
async def compare(request: CompareRequest):
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
if
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
limit = request.top_k * 4 if request.use_reranking else request.top_k
|
| 79 |
(
|
| 80 |
(retrieved_chunks_a, _),
|
|
@@ -125,8 +139,15 @@ async def compare(request: CompareRequest):
|
|
| 125 |
|
| 126 |
|
| 127 |
@router.post("/judge", response_model=JudgeResponse)
|
| 128 |
-
async def judge(request: JudgeRequest):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 129 |
prompt = system_instructions.format(
|
|
|
|
| 130 |
search_query=request.search_query,
|
| 131 |
chunk_a=request.chunk_a,
|
| 132 |
chunk_b=request.chunk_b,
|
|
|
|
| 4 |
from backend.constants import system_instructions
|
| 5 |
import asyncio
|
| 6 |
from typing import Any, Dict, List, Optional
|
| 7 |
+
from fastapi import APIRouter, Request, HTTPException
|
| 8 |
import json
|
| 9 |
from backend.engines.embedding import EmbeddingEngine
|
| 10 |
from backend.engines.reducer import ReducerEngine
|
| 11 |
+
from backend.rate_limiter import limiter
|
| 12 |
+
|
| 13 |
from backend.models.schemas import (
|
| 14 |
CompareRequest,
|
| 15 |
CompareResponse,
|
|
|
|
| 27 |
|
| 28 |
|
| 29 |
@router.post("/retrieve", response_model=QueryResponse)
|
| 30 |
+
async def retrieve(request: QueryRequest, http_request: Request):
|
| 31 |
+
|
| 32 |
+
if request.use_hyde:
|
| 33 |
+
client_ip = http_request.client.host if http_request.client else "127.0.0.1"
|
| 34 |
+
if not limiter.allow(client_ip):
|
| 35 |
+
raise HTTPException(
|
| 36 |
+
status_code=429,
|
| 37 |
+
detail="Rate limit exceeded. You can only make 2 LLM requests per minute."
|
| 38 |
+
)
|
| 39 |
+
search_text = await get_hyde_text(request.search_text)
|
| 40 |
+
else:
|
| 41 |
+
search_text = request.search_text
|
| 42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
limit = request.top_k * 4 if request.use_reranking else request.top_k
|
| 45 |
|
|
|
|
| 77 |
|
| 78 |
|
| 79 |
@router.post("/compare", response_model=CompareResponse)
|
| 80 |
+
async def compare(request: CompareRequest, http_request: Request):
|
| 81 |
+
if request.use_hyde:
|
| 82 |
+
client_ip = http_request.client.host if http_request.client else "127.0.0.1"
|
| 83 |
+
if not limiter.allow(client_ip):
|
| 84 |
+
raise HTTPException(
|
| 85 |
+
status_code=429,
|
| 86 |
+
detail="Rate limit exceeded. You can only make 2 LLM requests per minute."
|
| 87 |
+
)
|
| 88 |
+
retrieval_text = await get_hyde_text(request.search_text)
|
| 89 |
+
else:
|
| 90 |
+
retrieval_text = request.search_text
|
| 91 |
+
|
| 92 |
limit = request.top_k * 4 if request.use_reranking else request.top_k
|
| 93 |
(
|
| 94 |
(retrieved_chunks_a, _),
|
|
|
|
| 139 |
|
| 140 |
|
| 141 |
@router.post("/judge", response_model=JudgeResponse)
|
| 142 |
+
async def judge(request: JudgeRequest, http_request: Request):
|
| 143 |
+
client_ip = http_request.client.host if http_request.client else "127.0.0.1"
|
| 144 |
+
if not limiter.allow(client_ip):
|
| 145 |
+
raise HTTPException(
|
| 146 |
+
status_code=429,
|
| 147 |
+
detail="Rate limit exceeded. You can only make 2 LLM requests per minute."
|
| 148 |
+
)
|
| 149 |
prompt = system_instructions.format(
|
| 150 |
+
|
| 151 |
search_query=request.search_query,
|
| 152 |
chunk_a=request.chunk_a,
|
| 153 |
chunk_b=request.chunk_b,
|
frontend/app.js
CHANGED
|
@@ -1296,11 +1296,19 @@ async function runQuerySimulator() {
|
|
| 1296 |
});
|
| 1297 |
|
| 1298 |
if (!res.ok) {
|
| 1299 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1300 |
}
|
| 1301 |
|
| 1302 |
const data = await res.json();
|
| 1303 |
|
|
|
|
| 1304 |
// Parse the query coordinates returned by UMAP
|
| 1305 |
const targetX = data.query_coords[0];
|
| 1306 |
const targetY = data.query_coords[1];
|
|
@@ -1418,7 +1426,7 @@ async function runQuerySimulator() {
|
|
| 1418 |
// ----------------------------------------------
|
| 1419 |
} catch (err) {
|
| 1420 |
console.error("Query failed:", err);
|
| 1421 |
-
dom.queryResultsList.innerHTML = `<div style="color: #ef4444; padding: 1rem;">
|
| 1422 |
} finally {
|
| 1423 |
dom.btnQuery.disabled = false;
|
| 1424 |
dom.btnQuery.innerHTML = "🔍 Query";
|
|
@@ -1442,6 +1450,26 @@ if (dom.closeDrawer) {
|
|
| 1442 |
});
|
| 1443 |
}
|
| 1444 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1445 |
// ============================================================
|
| 1446 |
// TASK 3.5: ARENA COMPARISON LOGIC
|
| 1447 |
// ============================================================
|
|
@@ -1531,13 +1559,20 @@ if (domArena.btnFight) {
|
|
| 1531 |
}),
|
| 1532 |
});
|
| 1533 |
|
| 1534 |
-
if (!res.ok)
|
| 1535 |
-
|
| 1536 |
-
|
| 1537 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1538 |
|
| 1539 |
const data = await res.json();
|
| 1540 |
|
|
|
|
| 1541 |
// Render HyDE box if present
|
| 1542 |
const hydeText = document.getElementById("arena-hyde-text");
|
| 1543 |
if (hydeContainer && hydeText) {
|
|
@@ -1646,7 +1681,7 @@ if (domReferee.btnCall) {
|
|
| 1646 |
domReferee.verdictBox.style.display = "none";
|
| 1647 |
|
| 1648 |
const statuses = [
|
| 1649 |
-
"⚖️ Summoning
|
| 1650 |
"🔍 Blinding model names and metadata...",
|
| 1651 |
"🧠 Auditing Corner A relevance and clarity...",
|
| 1652 |
"🧠 Auditing Corner B completeness and truthfulness...",
|
|
@@ -1671,12 +1706,19 @@ if (domReferee.btnCall) {
|
|
| 1671 |
}),
|
| 1672 |
});
|
| 1673 |
|
| 1674 |
-
if (!res.ok)
|
| 1675 |
-
|
| 1676 |
-
|
| 1677 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1678 |
|
| 1679 |
const data = await res.json();
|
|
|
|
| 1680 |
clearInterval(statusInterval);
|
| 1681 |
|
| 1682 |
renderRefereeScorecard(data, labelA, labelB);
|
|
@@ -1816,3 +1858,41 @@ function renderScoreRow(label, valA, valB) {
|
|
| 1816 |
</div>
|
| 1817 |
`;
|
| 1818 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1296 |
});
|
| 1297 |
|
| 1298 |
if (!res.ok) {
|
| 1299 |
+
let errMsg = `HTTP error! status: ${res.status}`;
|
| 1300 |
+
try {
|
| 1301 |
+
const errData = await res.json();
|
| 1302 |
+
if (errData && errData.detail) {
|
| 1303 |
+
errMsg = errData.detail;
|
| 1304 |
+
}
|
| 1305 |
+
} catch (_) {}
|
| 1306 |
+
throw new Error(errMsg);
|
| 1307 |
}
|
| 1308 |
|
| 1309 |
const data = await res.json();
|
| 1310 |
|
| 1311 |
+
|
| 1312 |
// Parse the query coordinates returned by UMAP
|
| 1313 |
const targetX = data.query_coords[0];
|
| 1314 |
const targetY = data.query_coords[1];
|
|
|
|
| 1426 |
// ----------------------------------------------
|
| 1427 |
} catch (err) {
|
| 1428 |
console.error("Query failed:", err);
|
| 1429 |
+
dom.queryResultsList.innerHTML = `<div style="color: #ef4444; padding: 1rem;">${escapeHtml(err.message)}</div>`;
|
| 1430 |
} finally {
|
| 1431 |
dom.btnQuery.disabled = false;
|
| 1432 |
dom.btnQuery.innerHTML = "🔍 Query";
|
|
|
|
| 1450 |
});
|
| 1451 |
}
|
| 1452 |
|
| 1453 |
+
// Bind HyDE change warning toasts
|
| 1454 |
+
const queryUseHyde = document.getElementById("query-use-hyde");
|
| 1455 |
+
if (queryUseHyde) {
|
| 1456 |
+
queryUseHyde.addEventListener("change", (e) => {
|
| 1457 |
+
if (e.target.checked) {
|
| 1458 |
+
showToast("HyDE enabled! Query generation via LLM will take a bit longer (around 2-3 seconds).", "info");
|
| 1459 |
+
}
|
| 1460 |
+
});
|
| 1461 |
+
}
|
| 1462 |
+
|
| 1463 |
+
const arenaUseHyde = document.getElementById("arena-use-hyde");
|
| 1464 |
+
if (arenaUseHyde) {
|
| 1465 |
+
arenaUseHyde.addEventListener("change", (e) => {
|
| 1466 |
+
if (e.target.checked) {
|
| 1467 |
+
showToast("HyDE enabled! Comparison query generation via LLM will take a bit longer (around 2-3 seconds).", "info");
|
| 1468 |
+
}
|
| 1469 |
+
});
|
| 1470 |
+
}
|
| 1471 |
+
|
| 1472 |
+
|
| 1473 |
// ============================================================
|
| 1474 |
// TASK 3.5: ARENA COMPARISON LOGIC
|
| 1475 |
// ============================================================
|
|
|
|
| 1559 |
}),
|
| 1560 |
});
|
| 1561 |
|
| 1562 |
+
if (!res.ok) {
|
| 1563 |
+
let errMsg = "Comparison failed. Check if server is running.";
|
| 1564 |
+
try {
|
| 1565 |
+
const errData = await res.json();
|
| 1566 |
+
if (errData && errData.detail) {
|
| 1567 |
+
errMsg = errData.detail;
|
| 1568 |
+
}
|
| 1569 |
+
} catch (_) {}
|
| 1570 |
+
throw new Error(errMsg);
|
| 1571 |
+
}
|
| 1572 |
|
| 1573 |
const data = await res.json();
|
| 1574 |
|
| 1575 |
+
|
| 1576 |
// Render HyDE box if present
|
| 1577 |
const hydeText = document.getElementById("arena-hyde-text");
|
| 1578 |
if (hydeContainer && hydeText) {
|
|
|
|
| 1681 |
domReferee.verdictBox.style.display = "none";
|
| 1682 |
|
| 1683 |
const statuses = [
|
| 1684 |
+
"⚖️ Summoning AI evaluation referee...",
|
| 1685 |
"🔍 Blinding model names and metadata...",
|
| 1686 |
"🧠 Auditing Corner A relevance and clarity...",
|
| 1687 |
"🧠 Auditing Corner B completeness and truthfulness...",
|
|
|
|
| 1706 |
}),
|
| 1707 |
});
|
| 1708 |
|
| 1709 |
+
if (!res.ok) {
|
| 1710 |
+
let errMsg = "Evaluation referee failed to respond.";
|
| 1711 |
+
try {
|
| 1712 |
+
const errData = await res.json();
|
| 1713 |
+
if (errData && errData.detail) {
|
| 1714 |
+
errMsg = errData.detail;
|
| 1715 |
+
}
|
| 1716 |
+
} catch (_) {}
|
| 1717 |
+
throw new Error(errMsg);
|
| 1718 |
+
}
|
| 1719 |
|
| 1720 |
const data = await res.json();
|
| 1721 |
+
|
| 1722 |
clearInterval(statusInterval);
|
| 1723 |
|
| 1724 |
renderRefereeScorecard(data, labelA, labelB);
|
|
|
|
| 1858 |
</div>
|
| 1859 |
`;
|
| 1860 |
}
|
| 1861 |
+
|
| 1862 |
+
// --- TOAST NOTIFICATIONS SYSTEM ---
|
| 1863 |
+
function showToast(message, type = "info") {
|
| 1864 |
+
let container = document.querySelector(".toast-container");
|
| 1865 |
+
if (!container) {
|
| 1866 |
+
container = document.createElement("div");
|
| 1867 |
+
container.className = "toast-container";
|
| 1868 |
+
document.body.appendChild(container);
|
| 1869 |
+
}
|
| 1870 |
+
|
| 1871 |
+
const toast = document.createElement("div");
|
| 1872 |
+
toast.className = `toast toast-${type}`;
|
| 1873 |
+
|
| 1874 |
+
let icon = "ℹ️";
|
| 1875 |
+
if (type === "warning") icon = "⚠️";
|
| 1876 |
+
else if (type === "success") icon = "✅";
|
| 1877 |
+
else if (type === "error") icon = "❌";
|
| 1878 |
+
else if (type === "info") icon = "🔮"; // Default to crystal ball for HyDE/LLM notice
|
| 1879 |
+
|
| 1880 |
+
toast.innerHTML = `
|
| 1881 |
+
<span>${icon}</span>
|
| 1882 |
+
<span style="flex: 1;">${message}</span>
|
| 1883 |
+
`;
|
| 1884 |
+
|
| 1885 |
+
container.appendChild(toast);
|
| 1886 |
+
|
| 1887 |
+
// Auto-remove after 4 seconds
|
| 1888 |
+
setTimeout(() => {
|
| 1889 |
+
toast.classList.add("toast-fade-out");
|
| 1890 |
+
setTimeout(() => {
|
| 1891 |
+
toast.remove();
|
| 1892 |
+
if (container.children.length === 0) {
|
| 1893 |
+
container.remove();
|
| 1894 |
+
}
|
| 1895 |
+
}, 300);
|
| 1896 |
+
}, 4000);
|
| 1897 |
+
}
|
| 1898 |
+
|
frontend/index.html
CHANGED
|
@@ -429,16 +429,17 @@
|
|
| 429 |
</div>
|
| 430 |
|
| 431 |
<div class="referee-trigger-box" id="referee-trigger-box">
|
| 432 |
-
<p class="referee-prompt-text">Call upon the
|
| 433 |
<button class="btn-run" id="btn-call-referee" style="margin: 0 auto; display: block; max-width: 250px;">⚖️ CALL THE REFEREE</button>
|
| 434 |
</div>
|
| 435 |
|
| 436 |
<!-- Loading scanner status -->
|
| 437 |
<div class="referee-loading-box" id="referee-loading-box" style="display: none;">
|
| 438 |
<div class="skeleton-loader" style="max-width: 400px; margin: 0 auto 1rem; border-radius: 6px;"></div>
|
| 439 |
-
<div class="referee-status-text" id="referee-status-text">Summoning
|
| 440 |
</div>
|
| 441 |
|
|
|
|
| 442 |
<!-- Scorecard Verdict Display -->
|
| 443 |
<div class="referee-verdict-box" id="referee-verdict-box" style="display: none;"></div>
|
| 444 |
</div>
|
|
|
|
| 429 |
</div>
|
| 430 |
|
| 431 |
<div class="referee-trigger-box" id="referee-trigger-box">
|
| 432 |
+
<p class="referee-prompt-text">Call upon the AI evaluation referee to analyze, score, and judge both contexts! (Takes 2-3 seconds)</p>
|
| 433 |
<button class="btn-run" id="btn-call-referee" style="margin: 0 auto; display: block; max-width: 250px;">⚖️ CALL THE REFEREE</button>
|
| 434 |
</div>
|
| 435 |
|
| 436 |
<!-- Loading scanner status -->
|
| 437 |
<div class="referee-loading-box" id="referee-loading-box" style="display: none;">
|
| 438 |
<div class="skeleton-loader" style="max-width: 400px; margin: 0 auto 1rem; border-radius: 6px;"></div>
|
| 439 |
+
<div class="referee-status-text" id="referee-status-text">Summoning AI referee to review the case...</div>
|
| 440 |
</div>
|
| 441 |
|
| 442 |
+
|
| 443 |
<!-- Scorecard Verdict Display -->
|
| 444 |
<div class="referee-verdict-box" id="referee-verdict-box" style="display: none;"></div>
|
| 445 |
</div>
|
frontend/styles.css
CHANGED
|
@@ -698,6 +698,71 @@ input[type="range"]::-moz-range-thumb {
|
|
| 698 |
/* ============================================================
|
| 699 |
RETRIEVAL X-RAY HIGHLIGHTS (TASK 3.4)
|
| 700 |
============================================================ */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 701 |
/* --- Select Dropdown Styling --- */
|
| 702 |
.select-input {
|
| 703 |
padding: 8px 12px;
|
|
|
|
| 698 |
/* ============================================================
|
| 699 |
RETRIEVAL X-RAY HIGHLIGHTS (TASK 3.4)
|
| 700 |
============================================================ */
|
| 701 |
+
|
| 702 |
+
/* --- Premium Toast Notification System --- */
|
| 703 |
+
.toast-container {
|
| 704 |
+
position: fixed;
|
| 705 |
+
bottom: 24px;
|
| 706 |
+
right: 24px;
|
| 707 |
+
display: flex;
|
| 708 |
+
flex-direction: column;
|
| 709 |
+
gap: 12px;
|
| 710 |
+
z-index: 9999;
|
| 711 |
+
pointer-events: none;
|
| 712 |
+
}
|
| 713 |
+
|
| 714 |
+
.toast {
|
| 715 |
+
pointer-events: auto;
|
| 716 |
+
background-color: var(--bg-surface-raised, #1f2937);
|
| 717 |
+
border: 1px solid var(--border-default, #374151);
|
| 718 |
+
color: var(--text-primary, #f3f4f6);
|
| 719 |
+
padding: 12px 18px;
|
| 720 |
+
border-radius: var(--radius-md, 8px);
|
| 721 |
+
box-shadow: var(--shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.3));
|
| 722 |
+
font-family: var(--font-sans, system-ui);
|
| 723 |
+
font-size: 0.85rem;
|
| 724 |
+
display: flex;
|
| 725 |
+
align-items: center;
|
| 726 |
+
gap: var(--space-sm, 8px);
|
| 727 |
+
min-width: 250px;
|
| 728 |
+
max-width: 380px;
|
| 729 |
+
animation: toast-slide-in 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
| 730 |
+
transition: all 0.3s ease;
|
| 731 |
+
border-left: 4px solid var(--superman-blue, #3b82f6);
|
| 732 |
+
}
|
| 733 |
+
|
| 734 |
+
.toast.toast-info {
|
| 735 |
+
border-left-color: var(--superman-blue, #3b82f6);
|
| 736 |
+
}
|
| 737 |
+
|
| 738 |
+
.toast.toast-warning {
|
| 739 |
+
border-left-color: var(--warning-color, #f59e0b);
|
| 740 |
+
}
|
| 741 |
+
|
| 742 |
+
.toast.toast-success {
|
| 743 |
+
border-left-color: var(--success-color, #10b981);
|
| 744 |
+
}
|
| 745 |
+
|
| 746 |
+
.toast.toast-error {
|
| 747 |
+
border-left-color: var(--superman-red, #ef4444);
|
| 748 |
+
}
|
| 749 |
+
|
| 750 |
+
.toast.toast-fade-out {
|
| 751 |
+
opacity: 0;
|
| 752 |
+
transform: translateY(10px);
|
| 753 |
+
}
|
| 754 |
+
|
| 755 |
+
@keyframes toast-slide-in {
|
| 756 |
+
from {
|
| 757 |
+
opacity: 0;
|
| 758 |
+
transform: translateY(20px) scale(0.95);
|
| 759 |
+
}
|
| 760 |
+
to {
|
| 761 |
+
opacity: 1;
|
| 762 |
+
transform: translateY(0) scale(1);
|
| 763 |
+
}
|
| 764 |
+
}
|
| 765 |
+
|
| 766 |
/* --- Select Dropdown Styling --- */
|
| 767 |
.select-input {
|
| 768 |
padding: 8px 12px;
|
pyproject.toml
CHANGED
|
@@ -15,6 +15,7 @@ dependencies = [
|
|
| 15 |
"nltk>=3.9.4",
|
| 16 |
"umap-learn>=0.5.12",
|
| 17 |
"numpy>=2.4.4",
|
| 18 |
-
"ollama>=0.6.2",
|
| 19 |
"flashrank>=0.2.10",
|
|
|
|
| 20 |
]
|
|
|
|
|
|
| 15 |
"nltk>=3.9.4",
|
| 16 |
"umap-learn>=0.5.12",
|
| 17 |
"numpy>=2.4.4",
|
|
|
|
| 18 |
"flashrank>=0.2.10",
|
| 19 |
+
"sentence-transformers>=3.0.0",
|
| 20 |
]
|
| 21 |
+
|
uv.lock
CHANGED
|
@@ -292,6 +292,74 @@ wheels = [
|
|
| 292 |
{ 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" },
|
| 293 |
]
|
| 294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 295 |
[[package]]
|
| 296 |
name = "durationpy"
|
| 297 |
version = "0.10"
|
|
@@ -577,6 +645,18 @@ wheels = [
|
|
| 577 |
{ url = "https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl", hash = "sha256:1bd7b48b4088eddb2cd16382150bb515af0bd2c70128194392725f82ad2c96a1", size = 37232, upload-time = "2026-04-12T16:36:08.219Z" },
|
| 578 |
]
|
| 579 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 580 |
[[package]]
|
| 581 |
name = "joblib"
|
| 582 |
version = "1.5.3"
|
|
@@ -758,6 +838,80 @@ wheels = [
|
|
| 758 |
{ url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" },
|
| 759 |
]
|
| 760 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 761 |
[[package]]
|
| 762 |
name = "mdurl"
|
| 763 |
version = "0.1.2"
|
|
@@ -865,6 +1019,24 @@ wheels = [
|
|
| 865 |
{ url = "https://files.pythonhosted.org/packages/a0/0f/59204bf136d1201f8d7884cfbaf7498c5b4674e87a4c693f9bde63741ce1/mmh3-5.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:dfd51b4c56b673dfbc43d7d27ef857dd91124801e2806c69bb45585ce0fa019b", size = 40391, upload-time = "2026-03-05T15:55:56.697Z" },
|
| 866 |
]
|
| 867 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 868 |
[[package]]
|
| 869 |
name = "nltk"
|
| 870 |
version = "3.9.4"
|
|
@@ -992,25 +1164,164 @@ wheels = [
|
|
| 992 |
]
|
| 993 |
|
| 994 |
[[package]]
|
| 995 |
-
name = "
|
| 996 |
-
version = "
|
| 997 |
source = { registry = "https://pypi.org/simple" }
|
| 998 |
-
|
|
|
|
|
|
|
| 999 |
wheels = [
|
| 1000 |
-
{ url = "https://files.pythonhosted.org/packages/
|
|
|
|
| 1001 |
]
|
| 1002 |
|
| 1003 |
[[package]]
|
| 1004 |
-
name = "
|
| 1005 |
-
version = "0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1006 |
source = { registry = "https://pypi.org/simple" }
|
| 1007 |
dependencies = [
|
| 1008 |
-
{ name = "
|
| 1009 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1010 |
]
|
| 1011 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1012 |
wheels = [
|
| 1013 |
-
{ url = "https://files.pythonhosted.org/packages/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1014 |
]
|
| 1015 |
|
| 1016 |
[[package]]
|
|
@@ -1643,8 +1954,8 @@ dependencies = [
|
|
| 1643 |
{ name = "langchain-text-splitters" },
|
| 1644 |
{ name = "nltk" },
|
| 1645 |
{ name = "numpy" },
|
| 1646 |
-
{ name = "ollama" },
|
| 1647 |
{ name = "pydantic" },
|
|
|
|
| 1648 |
{ name = "tiktoken" },
|
| 1649 |
{ name = "umap-learn" },
|
| 1650 |
{ name = "uvicorn", extra = ["standard"] },
|
|
@@ -1659,8 +1970,8 @@ requires-dist = [
|
|
| 1659 |
{ name = "langchain-text-splitters", specifier = ">=1.1.2" },
|
| 1660 |
{ name = "nltk", specifier = ">=3.9.4" },
|
| 1661 |
{ name = "numpy", specifier = ">=2.4.4" },
|
| 1662 |
-
{ name = "ollama", specifier = ">=0.6.2" },
|
| 1663 |
{ name = "pydantic", specifier = ">=2.0" },
|
|
|
|
| 1664 |
{ name = "tiktoken", specifier = ">=0.9.0" },
|
| 1665 |
{ name = "umap-learn", specifier = ">=0.5.12" },
|
| 1666 |
{ name = "uvicorn", extras = ["standard"], specifier = ">=0.34.0" },
|
|
@@ -1945,6 +2256,30 @@ wheels = [
|
|
| 1945 |
{ url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" },
|
| 1946 |
]
|
| 1947 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1948 |
[[package]]
|
| 1949 |
name = "scikit-learn"
|
| 1950 |
version = "1.8.0"
|
|
@@ -2066,6 +2401,34 @@ wheels = [
|
|
| 2066 |
{ url = "https://files.pythonhosted.org/packages/07/39/338d9219c4e87f3e708f18857ecd24d22a0c3094752393319553096b98af/scipy-1.17.1-cp314-cp314t-win_arm64.whl", hash = "sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21", size = 25489165, upload-time = "2026-02-23T00:22:29.563Z" },
|
| 2067 |
]
|
| 2068 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2069 |
[[package]]
|
| 2070 |
name = "shellingham"
|
| 2071 |
version = "1.5.4"
|
|
@@ -2097,6 +2460,18 @@ wheels = [
|
|
| 2097 |
{ url = "https://files.pythonhosted.org/packages/0b/c9/584bc9651441b4ba60cc4d557d8a547b5aff901af35bda3a4ee30c819b82/starlette-1.0.0-py3-none-any.whl", hash = "sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b", size = 72651, upload-time = "2026-03-22T18:29:45.111Z" },
|
| 2098 |
]
|
| 2099 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2100 |
[[package]]
|
| 2101 |
name = "tenacity"
|
| 2102 |
version = "9.1.4"
|
|
@@ -2171,29 +2546,72 @@ wheels = [
|
|
| 2171 |
|
| 2172 |
[[package]]
|
| 2173 |
name = "tokenizers"
|
| 2174 |
-
version = "0.
|
| 2175 |
source = { registry = "https://pypi.org/simple" }
|
| 2176 |
dependencies = [
|
| 2177 |
{ name = "huggingface-hub" },
|
| 2178 |
]
|
| 2179 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 2180 |
wheels = [
|
| 2181 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2182 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2183 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2184 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2185 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2186 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2187 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2188 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2189 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2190 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2191 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2192 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2193 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2194 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2195 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 2196 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2197 |
]
|
| 2198 |
|
| 2199 |
[[package]]
|
|
@@ -2208,6 +2626,43 @@ wheels = [
|
|
| 2208 |
{ url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" },
|
| 2209 |
]
|
| 2210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2211 |
[[package]]
|
| 2212 |
name = "typer"
|
| 2213 |
version = "0.25.1"
|
|
|
|
| 292 |
{ 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" },
|
| 293 |
]
|
| 294 |
|
| 295 |
+
[[package]]
|
| 296 |
+
name = "cuda-bindings"
|
| 297 |
+
version = "13.3.1"
|
| 298 |
+
source = { registry = "https://pypi.org/simple" }
|
| 299 |
+
dependencies = [
|
| 300 |
+
{ name = "cuda-pathfinder" },
|
| 301 |
+
]
|
| 302 |
+
wheels = [
|
| 303 |
+
{ url = "https://files.pythonhosted.org/packages/51/6b/457ca12dad3ee9bfcc9a545cfd6b64b359ba49de40f776f6e028e678f262/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5879712accf6e14bb01aa5e67440eb84998b8d104b509cc7a6dc0b8f656a474", size = 6053539, upload-time = "2026-05-29T23:11:43.19Z" },
|
| 304 |
+
{ url = "https://files.pythonhosted.org/packages/95/7a/c5e3c34a409b148f5c0f5a4ea374158f95d488862c1dffedf9aa5c639df9/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04436a9364059c84b8f9636f359eccda1cf814341f5b670c71d80d2f79dbc708", size = 6674166, upload-time = "2026-05-29T23:11:45.478Z" },
|
| 305 |
+
{ url = "https://files.pythonhosted.org/packages/ce/67/5e7dba1ba576dd73da5dee894ca076ca5e959450dfff66d6d510a255d1f7/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7855c4868aabc0cfae28abbe83d56734bdfbd08f08fc234ac1912a12858bf49", size = 6025351, upload-time = "2026-05-29T23:11:49.685Z" },
|
| 306 |
+
{ url = "https://files.pythonhosted.org/packages/39/2a/6d2e9047d1fb243dbaa364b01e0297534b9ed7fd27dba1c9f361519cf69b/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e32d08f71ebcdf00f0f41eab2eb37e8da94c8ed411cc9f7f7a019ce6b34abe3a", size = 6657965, upload-time = "2026-05-29T23:11:52.227Z" },
|
| 307 |
+
{ url = "https://files.pythonhosted.org/packages/cc/6e/2394f8163360f8391f8f1b7e72d300a82724edb81a7b7084c799fbd4c91f/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9efb21c1ee64981e184b9e0ba5eb3179e5ba3d4b51665a6cb52b8ef3d01a7cbf", size = 5920504, upload-time = "2026-05-29T23:11:56.883Z" },
|
| 308 |
+
{ url = "https://files.pythonhosted.org/packages/34/c2/ef9b6a63f7dc432712a462c816662e662e00d38caa9b861c8c2588195d03/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2732904099e0a4d4db774a5fc6d91ee95fae065b4d2ecabb4968c5fe2406c9d7", size = 6476660, upload-time = "2026-05-29T23:11:59.188Z" },
|
| 309 |
+
{ url = "https://files.pythonhosted.org/packages/b1/81/bff68ce829999c1e4209c761bbf903b1c06ec570416ddb25020864ad5907/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ab2f74ed65bfef4163ba07a8db16f1085e0729291db12a2423aff84ee8278b8", size = 6013639, upload-time = "2026-05-29T23:12:03.509Z" },
|
| 310 |
+
{ url = "https://files.pythonhosted.org/packages/d4/e0/c8a1f0c8f9ffdea4f5fe6dbab89b326cef4d85caf489dad39e209da89416/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd4c814d311ec08c981f6dded1dbe7d4b371067ee4f6c14cccec4bde9590f80", size = 6534419, upload-time = "2026-05-29T23:12:05.633Z" },
|
| 311 |
+
{ url = "https://files.pythonhosted.org/packages/52/b8/83b1f563925b290f2d11a01a77a84013ba56052fe3653a5bef3ccfbb43d6/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3c772dfff49681541d59630c90f858e173ac926b9c593a2b7123f2a1043cc76", size = 5809771, upload-time = "2026-05-29T23:12:10.422Z" },
|
| 312 |
+
{ url = "https://files.pythonhosted.org/packages/12/20/e79b4bfe98f075195afb6343d41c498f9dbd2d161d7021d4d28bceb83581/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36febb7c1079d68a981dbbd8d5a67235b399802b82075c9388624719607e52b9", size = 6358584, upload-time = "2026-05-29T23:12:12.767Z" },
|
| 313 |
+
]
|
| 314 |
+
|
| 315 |
+
[[package]]
|
| 316 |
+
name = "cuda-pathfinder"
|
| 317 |
+
version = "1.5.5"
|
| 318 |
+
source = { registry = "https://pypi.org/simple" }
|
| 319 |
+
wheels = [
|
| 320 |
+
{ url = "https://files.pythonhosted.org/packages/11/c8/26f2e4aae92f11522a96043892ba39a90eac610d5242523aa863212bc1c7/cuda_pathfinder-1.5.5-py3-none-any.whl", hash = "sha256:0228c023f95d1480f143ef5c8922d27a2ab052087a942e81dc289c9eb8f91689", size = 51671, upload-time = "2026-05-27T01:21:25.413Z" },
|
| 321 |
+
]
|
| 322 |
+
|
| 323 |
+
[[package]]
|
| 324 |
+
name = "cuda-toolkit"
|
| 325 |
+
version = "13.0.2"
|
| 326 |
+
source = { registry = "https://pypi.org/simple" }
|
| 327 |
+
wheels = [
|
| 328 |
+
{ url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" },
|
| 329 |
+
]
|
| 330 |
+
|
| 331 |
+
[package.optional-dependencies]
|
| 332 |
+
cudart = [
|
| 333 |
+
{ name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 334 |
+
]
|
| 335 |
+
cufft = [
|
| 336 |
+
{ name = "nvidia-cufft", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 337 |
+
]
|
| 338 |
+
cufile = [
|
| 339 |
+
{ name = "nvidia-cufile", marker = "sys_platform == 'linux'" },
|
| 340 |
+
]
|
| 341 |
+
cupti = [
|
| 342 |
+
{ name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 343 |
+
]
|
| 344 |
+
curand = [
|
| 345 |
+
{ name = "nvidia-curand", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 346 |
+
]
|
| 347 |
+
cusolver = [
|
| 348 |
+
{ name = "nvidia-cusolver", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 349 |
+
]
|
| 350 |
+
cusparse = [
|
| 351 |
+
{ name = "nvidia-cusparse", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 352 |
+
]
|
| 353 |
+
nvjitlink = [
|
| 354 |
+
{ name = "nvidia-nvjitlink", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 355 |
+
]
|
| 356 |
+
nvrtc = [
|
| 357 |
+
{ name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 358 |
+
]
|
| 359 |
+
nvtx = [
|
| 360 |
+
{ name = "nvidia-nvtx", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
| 361 |
+
]
|
| 362 |
+
|
| 363 |
[[package]]
|
| 364 |
name = "durationpy"
|
| 365 |
version = "0.10"
|
|
|
|
| 645 |
{ url = "https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl", hash = "sha256:1bd7b48b4088eddb2cd16382150bb515af0bd2c70128194392725f82ad2c96a1", size = 37232, upload-time = "2026-04-12T16:36:08.219Z" },
|
| 646 |
]
|
| 647 |
|
| 648 |
+
[[package]]
|
| 649 |
+
name = "jinja2"
|
| 650 |
+
version = "3.1.6"
|
| 651 |
+
source = { registry = "https://pypi.org/simple" }
|
| 652 |
+
dependencies = [
|
| 653 |
+
{ name = "markupsafe" },
|
| 654 |
+
]
|
| 655 |
+
sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" }
|
| 656 |
+
wheels = [
|
| 657 |
+
{ url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" },
|
| 658 |
+
]
|
| 659 |
+
|
| 660 |
[[package]]
|
| 661 |
name = "joblib"
|
| 662 |
version = "1.5.3"
|
|
|
|
| 838 |
{ url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" },
|
| 839 |
]
|
| 840 |
|
| 841 |
+
[[package]]
|
| 842 |
+
name = "markupsafe"
|
| 843 |
+
version = "3.0.3"
|
| 844 |
+
source = { registry = "https://pypi.org/simple" }
|
| 845 |
+
sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" }
|
| 846 |
+
wheels = [
|
| 847 |
+
{ url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" },
|
| 848 |
+
{ url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" },
|
| 849 |
+
{ url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" },
|
| 850 |
+
{ url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" },
|
| 851 |
+
{ url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" },
|
| 852 |
+
{ url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" },
|
| 853 |
+
{ url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" },
|
| 854 |
+
{ url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" },
|
| 855 |
+
{ url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" },
|
| 856 |
+
{ url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" },
|
| 857 |
+
{ url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" },
|
| 858 |
+
{ url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" },
|
| 859 |
+
{ url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" },
|
| 860 |
+
{ url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" },
|
| 861 |
+
{ url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" },
|
| 862 |
+
{ url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" },
|
| 863 |
+
{ url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" },
|
| 864 |
+
{ url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" },
|
| 865 |
+
{ url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" },
|
| 866 |
+
{ url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" },
|
| 867 |
+
{ url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" },
|
| 868 |
+
{ url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" },
|
| 869 |
+
{ url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" },
|
| 870 |
+
{ url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" },
|
| 871 |
+
{ url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" },
|
| 872 |
+
{ url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" },
|
| 873 |
+
{ url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" },
|
| 874 |
+
{ url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" },
|
| 875 |
+
{ url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" },
|
| 876 |
+
{ url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" },
|
| 877 |
+
{ url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" },
|
| 878 |
+
{ url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" },
|
| 879 |
+
{ url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" },
|
| 880 |
+
{ url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" },
|
| 881 |
+
{ url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" },
|
| 882 |
+
{ url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" },
|
| 883 |
+
{ url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" },
|
| 884 |
+
{ url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" },
|
| 885 |
+
{ url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" },
|
| 886 |
+
{ url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" },
|
| 887 |
+
{ url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" },
|
| 888 |
+
{ url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" },
|
| 889 |
+
{ url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" },
|
| 890 |
+
{ url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" },
|
| 891 |
+
{ url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" },
|
| 892 |
+
{ url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" },
|
| 893 |
+
{ url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" },
|
| 894 |
+
{ url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" },
|
| 895 |
+
{ url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" },
|
| 896 |
+
{ url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" },
|
| 897 |
+
{ url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" },
|
| 898 |
+
{ url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" },
|
| 899 |
+
{ url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" },
|
| 900 |
+
{ url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" },
|
| 901 |
+
{ url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" },
|
| 902 |
+
{ url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" },
|
| 903 |
+
{ url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" },
|
| 904 |
+
{ url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" },
|
| 905 |
+
{ url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" },
|
| 906 |
+
{ url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" },
|
| 907 |
+
{ url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" },
|
| 908 |
+
{ url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" },
|
| 909 |
+
{ url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" },
|
| 910 |
+
{ url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" },
|
| 911 |
+
{ url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" },
|
| 912 |
+
{ 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" },
|
| 913 |
+
]
|
| 914 |
+
|
| 915 |
[[package]]
|
| 916 |
name = "mdurl"
|
| 917 |
version = "0.1.2"
|
|
|
|
| 1019 |
{ url = "https://files.pythonhosted.org/packages/a0/0f/59204bf136d1201f8d7884cfbaf7498c5b4674e87a4c693f9bde63741ce1/mmh3-5.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:dfd51b4c56b673dfbc43d7d27ef857dd91124801e2806c69bb45585ce0fa019b", size = 40391, upload-time = "2026-03-05T15:55:56.697Z" },
|
| 1020 |
]
|
| 1021 |
|
| 1022 |
+
[[package]]
|
| 1023 |
+
name = "mpmath"
|
| 1024 |
+
version = "1.3.0"
|
| 1025 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1026 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" }
|
| 1027 |
+
wheels = [
|
| 1028 |
+
{ url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" },
|
| 1029 |
+
]
|
| 1030 |
+
|
| 1031 |
+
[[package]]
|
| 1032 |
+
name = "networkx"
|
| 1033 |
+
version = "3.6.1"
|
| 1034 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1035 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" }
|
| 1036 |
+
wheels = [
|
| 1037 |
+
{ url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" },
|
| 1038 |
+
]
|
| 1039 |
+
|
| 1040 |
[[package]]
|
| 1041 |
name = "nltk"
|
| 1042 |
version = "3.9.4"
|
|
|
|
| 1164 |
]
|
| 1165 |
|
| 1166 |
[[package]]
|
| 1167 |
+
name = "nvidia-cublas"
|
| 1168 |
+
version = "13.1.1.3"
|
| 1169 |
source = { registry = "https://pypi.org/simple" }
|
| 1170 |
+
dependencies = [
|
| 1171 |
+
{ name = "nvidia-cuda-nvrtc" },
|
| 1172 |
+
]
|
| 1173 |
wheels = [
|
| 1174 |
+
{ url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918, upload-time = "2026-04-08T18:46:22.985Z" },
|
| 1175 |
+
{ url = "https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:37936a16db8fe4ac1f065c2139360608a543a09275cb1a1af612e08cfa065436", size = 423138758, upload-time = "2026-04-08T18:46:58.655Z" },
|
| 1176 |
]
|
| 1177 |
|
| 1178 |
[[package]]
|
| 1179 |
+
name = "nvidia-cuda-cupti"
|
| 1180 |
+
version = "13.0.85"
|
| 1181 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1182 |
+
wheels = [
|
| 1183 |
+
{ url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" },
|
| 1184 |
+
{ url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" },
|
| 1185 |
+
]
|
| 1186 |
+
|
| 1187 |
+
[[package]]
|
| 1188 |
+
name = "nvidia-cuda-nvrtc"
|
| 1189 |
+
version = "13.0.88"
|
| 1190 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1191 |
+
wheels = [
|
| 1192 |
+
{ url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" },
|
| 1193 |
+
{ url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" },
|
| 1194 |
+
]
|
| 1195 |
+
|
| 1196 |
+
[[package]]
|
| 1197 |
+
name = "nvidia-cuda-runtime"
|
| 1198 |
+
version = "13.0.96"
|
| 1199 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1200 |
+
wheels = [
|
| 1201 |
+
{ url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" },
|
| 1202 |
+
{ url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" },
|
| 1203 |
+
]
|
| 1204 |
+
|
| 1205 |
+
[[package]]
|
| 1206 |
+
name = "nvidia-cudnn-cu13"
|
| 1207 |
+
version = "9.20.0.48"
|
| 1208 |
source = { registry = "https://pypi.org/simple" }
|
| 1209 |
dependencies = [
|
| 1210 |
+
{ name = "nvidia-cublas" },
|
| 1211 |
+
]
|
| 1212 |
+
wheels = [
|
| 1213 |
+
{ url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" },
|
| 1214 |
+
{ url = "https://files.pythonhosted.org/packages/6e/5e/edb9c0ae051602c3ccaffe424256463636d639e27d7f302dde9975ef9e7a/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0c45dd8eeb50b603f07995b1b300c62ffe6a1980482b82b3bcf94a4ca9d49304", size = 366173588, upload-time = "2026-03-09T19:29:34.474Z" },
|
| 1215 |
+
]
|
| 1216 |
+
|
| 1217 |
+
[[package]]
|
| 1218 |
+
name = "nvidia-cufft"
|
| 1219 |
+
version = "12.0.0.61"
|
| 1220 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1221 |
+
dependencies = [
|
| 1222 |
+
{ name = "nvidia-nvjitlink" },
|
| 1223 |
+
]
|
| 1224 |
+
wheels = [
|
| 1225 |
+
{ url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" },
|
| 1226 |
+
{ url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" },
|
| 1227 |
+
]
|
| 1228 |
+
|
| 1229 |
+
[[package]]
|
| 1230 |
+
name = "nvidia-cufile"
|
| 1231 |
+
version = "1.15.1.6"
|
| 1232 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1233 |
+
wheels = [
|
| 1234 |
+
{ url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" },
|
| 1235 |
+
{ url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" },
|
| 1236 |
+
]
|
| 1237 |
+
|
| 1238 |
+
[[package]]
|
| 1239 |
+
name = "nvidia-curand"
|
| 1240 |
+
version = "10.4.0.35"
|
| 1241 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1242 |
+
wheels = [
|
| 1243 |
+
{ url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" },
|
| 1244 |
+
{ url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" },
|
| 1245 |
+
]
|
| 1246 |
+
|
| 1247 |
+
[[package]]
|
| 1248 |
+
name = "nvidia-cusolver"
|
| 1249 |
+
version = "12.0.4.66"
|
| 1250 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1251 |
+
dependencies = [
|
| 1252 |
+
{ name = "nvidia-cublas" },
|
| 1253 |
+
{ name = "nvidia-cusparse" },
|
| 1254 |
+
{ name = "nvidia-nvjitlink" },
|
| 1255 |
+
]
|
| 1256 |
+
wheels = [
|
| 1257 |
+
{ url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" },
|
| 1258 |
+
{ url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" },
|
| 1259 |
+
]
|
| 1260 |
+
|
| 1261 |
+
[[package]]
|
| 1262 |
+
name = "nvidia-cusparse"
|
| 1263 |
+
version = "12.6.3.3"
|
| 1264 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1265 |
+
dependencies = [
|
| 1266 |
+
{ name = "nvidia-nvjitlink" },
|
| 1267 |
+
]
|
| 1268 |
+
wheels = [
|
| 1269 |
+
{ url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" },
|
| 1270 |
+
{ url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" },
|
| 1271 |
+
]
|
| 1272 |
+
|
| 1273 |
+
[[package]]
|
| 1274 |
+
name = "nvidia-cusparselt-cu13"
|
| 1275 |
+
version = "0.8.1"
|
| 1276 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1277 |
+
wheels = [
|
| 1278 |
+
{ url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344, upload-time = "2025-09-05T18:49:51.289Z" },
|
| 1279 |
+
{ url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586, upload-time = "2025-09-05T18:50:50.248Z" },
|
| 1280 |
+
]
|
| 1281 |
+
|
| 1282 |
+
[[package]]
|
| 1283 |
+
name = "nvidia-nccl-cu13"
|
| 1284 |
+
version = "2.29.7"
|
| 1285 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1286 |
+
wheels = [
|
| 1287 |
+
{ url = "https://files.pythonhosted.org/packages/72/0d/daf50d44177ee0cbc7ff0a0c91eb5ff676c82be42f9a970bc7597f440c3a/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:674a12383e3c38a1bcccae7d4f3633b37852230b6047883cb2f4c2d1b36d9bf5", size = 206014712, upload-time = "2026-03-03T05:34:20.843Z" },
|
| 1288 |
+
{ url = "https://files.pythonhosted.org/packages/67/f4/58e4e91b6919367c7aafb8e36fce9aad1a3047e536bf7e2fd560927d3a4c/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:edd81538446786ec3b73972543e53bb43bcaf0bfc8ef76cb679fcc390ffe136d", size = 205976000, upload-time = "2026-03-03T05:36:24.472Z" },
|
| 1289 |
+
]
|
| 1290 |
+
|
| 1291 |
+
[[package]]
|
| 1292 |
+
name = "nvidia-nvjitlink"
|
| 1293 |
+
version = "13.0.88"
|
| 1294 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1295 |
+
wheels = [
|
| 1296 |
+
{ url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" },
|
| 1297 |
+
{ url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" },
|
| 1298 |
+
]
|
| 1299 |
+
|
| 1300 |
+
[[package]]
|
| 1301 |
+
name = "nvidia-nvshmem-cu13"
|
| 1302 |
+
version = "3.4.5"
|
| 1303 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1304 |
+
wheels = [
|
| 1305 |
+
{ url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" },
|
| 1306 |
+
{ url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" },
|
| 1307 |
]
|
| 1308 |
+
|
| 1309 |
+
[[package]]
|
| 1310 |
+
name = "nvidia-nvtx"
|
| 1311 |
+
version = "13.0.85"
|
| 1312 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1313 |
wheels = [
|
| 1314 |
+
{ url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" },
|
| 1315 |
+
{ url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" },
|
| 1316 |
+
]
|
| 1317 |
+
|
| 1318 |
+
[[package]]
|
| 1319 |
+
name = "oauthlib"
|
| 1320 |
+
version = "3.3.1"
|
| 1321 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1322 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" }
|
| 1323 |
+
wheels = [
|
| 1324 |
+
{ url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" },
|
| 1325 |
]
|
| 1326 |
|
| 1327 |
[[package]]
|
|
|
|
| 1954 |
{ name = "langchain-text-splitters" },
|
| 1955 |
{ name = "nltk" },
|
| 1956 |
{ name = "numpy" },
|
|
|
|
| 1957 |
{ name = "pydantic" },
|
| 1958 |
+
{ name = "sentence-transformers" },
|
| 1959 |
{ name = "tiktoken" },
|
| 1960 |
{ name = "umap-learn" },
|
| 1961 |
{ name = "uvicorn", extra = ["standard"] },
|
|
|
|
| 1970 |
{ name = "langchain-text-splitters", specifier = ">=1.1.2" },
|
| 1971 |
{ name = "nltk", specifier = ">=3.9.4" },
|
| 1972 |
{ name = "numpy", specifier = ">=2.4.4" },
|
|
|
|
| 1973 |
{ name = "pydantic", specifier = ">=2.0" },
|
| 1974 |
+
{ name = "sentence-transformers", specifier = ">=3.0.0" },
|
| 1975 |
{ name = "tiktoken", specifier = ">=0.9.0" },
|
| 1976 |
{ name = "umap-learn", specifier = ">=0.5.12" },
|
| 1977 |
{ name = "uvicorn", extras = ["standard"], specifier = ">=0.34.0" },
|
|
|
|
| 2256 |
{ url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" },
|
| 2257 |
]
|
| 2258 |
|
| 2259 |
+
[[package]]
|
| 2260 |
+
name = "safetensors"
|
| 2261 |
+
version = "0.8.0"
|
| 2262 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2263 |
+
sdist = { url = "https://files.pythonhosted.org/packages/45/06/f955dbbb1859e3bd23c8ac6141af5106e7ad5fedec4a3a6e3d60f94b7001/safetensors-0.8.0.tar.gz", hash = "sha256:fabaf3e0f18a6618d9b36560682562157f77c2b71fcffc7b432be2baed9d753d", size = 325846, upload-time = "2026-06-09T07:52:25.563Z" }
|
| 2264 |
+
wheels = [
|
| 2265 |
+
{ url = "https://files.pythonhosted.org/packages/39/a0/f718cda65b05407d228f97602cf60dca269c979867aa5beb25410de26cd3/safetensors-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c554f85858e05226d3c2828e32395e677434685d6d94594a41643361c5e837f0", size = 473568, upload-time = "2026-06-09T07:52:18.829Z" },
|
| 2266 |
+
{ url = "https://files.pythonhosted.org/packages/f5/b1/fa7c600e7dceae12e9606c7578cbc9ff1e1ed55844883ee5c92205e86226/safetensors-0.8.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c80201d22cbf405b80647a60ada77bba06c8fba2da2743ba1e89cdcc39a81f25", size = 484562, upload-time = "2026-06-09T07:52:17.518Z" },
|
| 2267 |
+
{ url = "https://files.pythonhosted.org/packages/09/7d/65a7de0af421317bb36a067241e4235fff194eed60b961ed6d3f59a3fc60/safetensors-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a46e5ff292c356d6991e60942ba7f79817682d3a2cef0702136448cb9c4d235", size = 502844, upload-time = "2026-06-09T07:52:07.624Z" },
|
| 2268 |
+
{ url = "https://files.pythonhosted.org/packages/91/4f/3175c9d75634e0e0dda0082794193521035edd7c70a6f212bf33ca06ddf4/safetensors-0.8.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4124502b78f03534117c848f87a39b8f31e577b15eff423bf8bfb95f2a8c30d0", size = 511823, upload-time = "2026-06-09T07:52:09.565Z" },
|
| 2269 |
+
{ url = "https://files.pythonhosted.org/packages/20/87/846c289e7aa2299eff406335717cf43ce8777194ece8aad75772e0411615/safetensors-0.8.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bc0a787ba8a35be368ee3574edfa2b1ad389eebd0a72e482ae275490e3f6c98", size = 633461, upload-time = "2026-06-09T07:52:11.128Z" },
|
| 2270 |
+
{ url = "https://files.pythonhosted.org/packages/76/22/8d64d9df2c45d5ded401df889d0ad90882804ca172d79ec4f0df8f727fe0/safetensors-0.8.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040070828e36dc8e122178bbbd5830ff9e97920affb84cbe0f46442497bed358", size = 545148, upload-time = "2026-06-09T07:52:13.603Z" },
|
| 2271 |
+
{ url = "https://files.pythonhosted.org/packages/28/50/f203ff3a3ddfe19308efc83c5a3a29ed02bf786732ec35e68bf9162f3365/safetensors-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6f3f93c9a0a7cc2788ee63fb763353d4bd2e89b0751bc78fcf7dda00bea774", size = 516040, upload-time = "2026-06-09T07:52:16.29Z" },
|
| 2272 |
+
{ url = "https://files.pythonhosted.org/packages/46/fb/cdaed17ceb2948784fd9c36b6fd3e951b608547cea81a48e8ee6f8cfdfcb/safetensors-0.8.0-cp310-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:fcdd41ec4628fee5799f807c73c353629130fbd942aa23d83c623dd6c9d52d78", size = 513832, upload-time = "2026-06-09T07:52:12.37Z" },
|
| 2273 |
+
{ url = "https://files.pythonhosted.org/packages/0d/49/1e15de264dcc3b77943d2d0c56a95809956883b1c2d6d585c792523f180b/safetensors-0.8.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e9f537aa183a38ace122d27303dcd986b26bd2a7591f9181d7f0c396f4677ca", size = 559930, upload-time = "2026-06-09T07:52:14.743Z" },
|
| 2274 |
+
{ url = "https://files.pythonhosted.org/packages/2a/43/bf38443278eab4b1be1fce2931e2b012ad9cb7df52ada751d0aab8f7659a/safetensors-0.8.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:87eec7ffed2b809f05a398a8becb7d013f19f7837cd15d9748580d6cf30dbaf4", size = 678670, upload-time = "2026-06-09T07:52:20.032Z" },
|
| 2275 |
+
{ url = "https://files.pythonhosted.org/packages/72/e3/68cd3fa5b48488e84add63e04cb12f3bc28ae4638c06d4508c6e88823d0e/safetensors-0.8.0-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:4a95ae2b05d7726d751da4ebf626a2ca782b706e101bd894c95bc2450b1cffcc", size = 786679, upload-time = "2026-06-09T07:52:21.322Z" },
|
| 2276 |
+
{ url = "https://files.pythonhosted.org/packages/29/4b/1c19c509d56e01f4fbb3d0a2e597450f6cc04d1d56cf52defb0a62dfd715/safetensors-0.8.0-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:3ae091f16662658bdc019a4ff6cb4c085bb7d725eb5978b183ffd265863b6d2d", size = 765683, upload-time = "2026-06-09T07:52:22.594Z" },
|
| 2277 |
+
{ url = "https://files.pythonhosted.org/packages/27/43/41c1621732edd934d868a00d1b891584c892a7b62a9aab82ea5a0a5623ee/safetensors-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8e080062fcde23be189565e1c3305d16751a218ecf9412c8601e64204eb6f846", size = 722361, upload-time = "2026-06-09T07:52:23.924Z" },
|
| 2278 |
+
{ url = "https://files.pythonhosted.org/packages/8e/3f/73ccf82579412b4a71c4ca673f10b5f1f888d7cf5af7fe24f27d30307be4/safetensors-0.8.0-cp310-abi3-win32.whl", hash = "sha256:2ddf52eac562eda224f99acfa7889d02968c1fd59a5b011ae7d8137c37e9c02d", size = 342401, upload-time = "2026-06-09T07:52:28.895Z" },
|
| 2279 |
+
{ url = "https://files.pythonhosted.org/packages/1b/6d/3fba214c1e5e0f69991677ec3bc17023f0421776975e1de0c682dca475e2/safetensors-0.8.0-cp310-abi3-win_amd64.whl", hash = "sha256:096ec1a98435df7beb08853bb5aa9081a84f23d0adc67ed1a0a10550f608373f", size = 355540, upload-time = "2026-06-09T07:52:27.832Z" },
|
| 2280 |
+
{ url = "https://files.pythonhosted.org/packages/8d/fc/7eedc3510d97878876e32774eebbeb61c43f148a96e915c84229a3e967aa/safetensors-0.8.0-cp310-abi3-win_arm64.whl", hash = "sha256:f7838e5135a406ad3e02efdcb8cf2e5397d368b0154537c4fec682dbc544d452", size = 340500, upload-time = "2026-06-09T07:52:26.745Z" },
|
| 2281 |
+
]
|
| 2282 |
+
|
| 2283 |
[[package]]
|
| 2284 |
name = "scikit-learn"
|
| 2285 |
version = "1.8.0"
|
|
|
|
| 2401 |
{ url = "https://files.pythonhosted.org/packages/07/39/338d9219c4e87f3e708f18857ecd24d22a0c3094752393319553096b98af/scipy-1.17.1-cp314-cp314t-win_arm64.whl", hash = "sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21", size = 25489165, upload-time = "2026-02-23T00:22:29.563Z" },
|
| 2402 |
]
|
| 2403 |
|
| 2404 |
+
[[package]]
|
| 2405 |
+
name = "sentence-transformers"
|
| 2406 |
+
version = "5.6.0"
|
| 2407 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2408 |
+
dependencies = [
|
| 2409 |
+
{ name = "huggingface-hub" },
|
| 2410 |
+
{ name = "numpy" },
|
| 2411 |
+
{ name = "scikit-learn" },
|
| 2412 |
+
{ name = "scipy" },
|
| 2413 |
+
{ name = "torch" },
|
| 2414 |
+
{ name = "tqdm" },
|
| 2415 |
+
{ name = "transformers" },
|
| 2416 |
+
{ name = "typing-extensions" },
|
| 2417 |
+
]
|
| 2418 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f9/56/d2cb00765a6b15c994a7fccf20f9032f16e8193ca49147cb5155166ad744/sentence_transformers-5.6.0.tar.gz", hash = "sha256:0e7164d051e416c1853ade7c274ff52af3f9da0f4be7f0b83d734c27699e1057", size = 453194, upload-time = "2026-06-16T14:01:56.42Z" }
|
| 2419 |
+
wheels = [
|
| 2420 |
+
{ url = "https://files.pythonhosted.org/packages/76/c1/dc1582b79e9a2eb0cddf9559cd9bcdff084f541d6fe881fdd9d98630dba7/sentence_transformers-5.6.0-py3-none-any.whl", hash = "sha256:d2075b5e687a1611005e20ab04a6846994d51adfcf39610aed066af3c0c0b81f", size = 596411, upload-time = "2026-06-16T14:01:55.103Z" },
|
| 2421 |
+
]
|
| 2422 |
+
|
| 2423 |
+
[[package]]
|
| 2424 |
+
name = "setuptools"
|
| 2425 |
+
version = "81.0.0"
|
| 2426 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2427 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" }
|
| 2428 |
+
wheels = [
|
| 2429 |
+
{ url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" },
|
| 2430 |
+
]
|
| 2431 |
+
|
| 2432 |
[[package]]
|
| 2433 |
name = "shellingham"
|
| 2434 |
version = "1.5.4"
|
|
|
|
| 2460 |
{ url = "https://files.pythonhosted.org/packages/0b/c9/584bc9651441b4ba60cc4d557d8a547b5aff901af35bda3a4ee30c819b82/starlette-1.0.0-py3-none-any.whl", hash = "sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b", size = 72651, upload-time = "2026-03-22T18:29:45.111Z" },
|
| 2461 |
]
|
| 2462 |
|
| 2463 |
+
[[package]]
|
| 2464 |
+
name = "sympy"
|
| 2465 |
+
version = "1.14.0"
|
| 2466 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2467 |
+
dependencies = [
|
| 2468 |
+
{ name = "mpmath" },
|
| 2469 |
+
]
|
| 2470 |
+
sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" }
|
| 2471 |
+
wheels = [
|
| 2472 |
+
{ url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" },
|
| 2473 |
+
]
|
| 2474 |
+
|
| 2475 |
[[package]]
|
| 2476 |
name = "tenacity"
|
| 2477 |
version = "9.1.4"
|
|
|
|
| 2546 |
|
| 2547 |
[[package]]
|
| 2548 |
name = "tokenizers"
|
| 2549 |
+
version = "0.22.2"
|
| 2550 |
source = { registry = "https://pypi.org/simple" }
|
| 2551 |
dependencies = [
|
| 2552 |
{ name = "huggingface-hub" },
|
| 2553 |
]
|
| 2554 |
+
sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" }
|
| 2555 |
wheels = [
|
| 2556 |
+
{ url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" },
|
| 2557 |
+
{ url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" },
|
| 2558 |
+
{ url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" },
|
| 2559 |
+
{ url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" },
|
| 2560 |
+
{ url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" },
|
| 2561 |
+
{ url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" },
|
| 2562 |
+
{ url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" },
|
| 2563 |
+
{ url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" },
|
| 2564 |
+
{ url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" },
|
| 2565 |
+
{ url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" },
|
| 2566 |
+
{ url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" },
|
| 2567 |
+
{ url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" },
|
| 2568 |
+
{ url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" },
|
| 2569 |
+
{ url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" },
|
| 2570 |
+
{ url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" },
|
| 2571 |
+
]
|
| 2572 |
+
|
| 2573 |
+
[[package]]
|
| 2574 |
+
name = "torch"
|
| 2575 |
+
version = "2.12.1"
|
| 2576 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2577 |
+
dependencies = [
|
| 2578 |
+
{ name = "cuda-bindings", marker = "sys_platform == 'linux'" },
|
| 2579 |
+
{ name = "cuda-toolkit", extra = ["cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" },
|
| 2580 |
+
{ name = "filelock" },
|
| 2581 |
+
{ name = "fsspec" },
|
| 2582 |
+
{ name = "jinja2" },
|
| 2583 |
+
{ name = "networkx" },
|
| 2584 |
+
{ name = "nvidia-cublas", marker = "sys_platform == 'linux'" },
|
| 2585 |
+
{ name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" },
|
| 2586 |
+
{ name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" },
|
| 2587 |
+
{ name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" },
|
| 2588 |
+
{ name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" },
|
| 2589 |
+
{ name = "setuptools" },
|
| 2590 |
+
{ name = "sympy" },
|
| 2591 |
+
{ name = "triton", marker = "sys_platform == 'linux'" },
|
| 2592 |
+
{ name = "typing-extensions" },
|
| 2593 |
+
]
|
| 2594 |
+
wheels = [
|
| 2595 |
+
{ url = "https://files.pythonhosted.org/packages/59/38/7028d3be540f1dcdf41660a2b01d0c51d2cb73915fe370d84e4d277a6d47/torch-2.12.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ef81f503912effea2ce3d9b12a2e3a6ed488943e91271c90c7a829f60baf6aa2", size = 87975425, upload-time = "2026-06-17T21:08:34.094Z" },
|
| 2596 |
+
{ url = "https://files.pythonhosted.org/packages/5a/e3/750b3e3548635ceac03ba255daa26dbc7ed66ca3484dc4b4d955ab7f4501/torch-2.12.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:107df6888624bdea41508f9aeb6149d9333c737a5530ceecb56c904e811369ae", size = 426379894, upload-time = "2026-06-17T21:06:55.077Z" },
|
| 2597 |
+
{ url = "https://files.pythonhosted.org/packages/dc/ca/ed24783da629ff3e640ba3f70a7639e9045d3d88b93ee6bc47b8a28a1f2c/torch-2.12.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:6e29e7e74d05bda7d955c75e99459f878ebd970ef851b4057edbd3b34a5eb4a3", size = 532169264, upload-time = "2026-06-17T21:08:17.65Z" },
|
| 2598 |
+
{ url = "https://files.pythonhosted.org/packages/46/61/c63f0158446f3a98ea672b004d761b848911eba567ea4a624c7db5aadc04/torch-2.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:a513506cfda3c1c78dabeb6574c1597538c0254b3d39af174dde35d8177f4ce3", size = 122953086, upload-time = "2026-06-17T21:08:27.69Z" },
|
| 2599 |
+
{ url = "https://files.pythonhosted.org/packages/f0/54/efb7ebca77970012b0cc21687a55d70eb2ba514b2c2b8e18d9fb1222f3be/torch-2.12.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d2dd0f2c5f7ccbddaf34cade0deaf476808368f902b9cdb7f36a2ab42301bc0e", size = 87991951, upload-time = "2026-06-17T21:07:49.309Z" },
|
| 2600 |
+
{ url = "https://files.pythonhosted.org/packages/1e/00/4210d76ca7424981f04033ebe7e48816ab83287a62538747a58825db770c/torch-2.12.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:2de4e19b88a481482c6c75291f2d6a52eda3ce51f311b29aa9b68499c830c07c", size = 426382721, upload-time = "2026-06-17T21:06:41.842Z" },
|
| 2601 |
+
{ url = "https://files.pythonhosted.org/packages/76/1f/bc9f5a5aa569307076365f25afcebacb22e9c754b1bcfbaaa146627c7fda/torch-2.12.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:649e4ced014ba646f76f8cb9c9726735a6323eb321b7919f942790a923f90921", size = 532261322, upload-time = "2026-06-17T21:06:06.673Z" },
|
| 2602 |
+
{ url = "https://files.pythonhosted.org/packages/9e/49/c549461daa008159d006a76a991fbc2f26fa8bac27a4030c858463dcb20f/torch-2.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:e86550597877fb272ddc52db2f85b82cb601ea7bd932576a0340152cae2200b3", size = 122988095, upload-time = "2026-06-17T21:07:44.9Z" },
|
| 2603 |
+
{ url = "https://files.pythonhosted.org/packages/ff/4a/0300261818e1560d72cc160ac826005507e8b7ca0a35788b591436d05b4a/torch-2.12.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c75e93173c700bccd6bfcc4a9d19ce242ab6dacd1f1781483027a16239b9e650", size = 87992358, upload-time = "2026-06-17T21:07:40.299Z" },
|
| 2604 |
+
{ url = "https://files.pythonhosted.org/packages/30/a7/874a5ca05e8f159211dca7921060f7057acc1adb26431e119fd150623efc/torch-2.12.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:fcb61ccd20784b62bdd78ec84238a5cfb383b4994902e03bac95505ab360884c", size = 426386134, upload-time = "2026-06-17T21:07:31.481Z" },
|
| 2605 |
+
{ url = "https://files.pythonhosted.org/packages/e1/75/20bb8fe9c1ad6538cce8cd0391b51927ae5af0b17ed1eab44b8824465dc1/torch-2.12.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:f4afc8083dff08719edbea346644476e3cec0cf40ebe256be0ee5d5b7c7e8c0d", size = 532268019, upload-time = "2026-06-17T21:05:37.925Z" },
|
| 2606 |
+
{ url = "https://files.pythonhosted.org/packages/d1/fa/824ddb662af55b2eabc0dbb7b57c7c0b1bcd93693754a2b8509ec4d16490/torch-2.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:f92609e3b3ce72f25e2eb780d043ced2480c1a86c47c852604fc7a9108648386", size = 122987777, upload-time = "2026-06-17T21:07:09.49Z" },
|
| 2607 |
+
{ url = "https://files.pythonhosted.org/packages/63/b7/1b49fe7086ea36839cc80abc43174c43d0ab6f676c0891c871c162f44fe3/torch-2.12.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e9b6f7d2dd66ea87a3ae620069d31335d594c06effb1a383bdd21cfe61e44ece", size = 88010025, upload-time = "2026-06-17T21:07:03.934Z" },
|
| 2608 |
+
{ url = "https://files.pythonhosted.org/packages/d7/06/5b44063a6545036dcc680d2d303b137d9176cfb2cc1e1863e3ef94abeb52/torch-2.12.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:7973ccd3d2cd35c74449213f7bded199bec6c6247e705cbeda7407af79703d91", size = 426392891, upload-time = "2026-06-17T21:05:52.261Z" },
|
| 2609 |
+
{ url = "https://files.pythonhosted.org/packages/f8/dd/c9ce9a4b0eb3c5bb92d9ea56766e2c22559f0b45171149188494edcce80f/torch-2.12.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:c64ac4aac16be5e296dcd912305605804b203333c690bf98c55bc09494ee92ad", size = 532272494, upload-time = "2026-06-17T21:06:22.72Z" },
|
| 2610 |
+
{ url = "https://files.pythonhosted.org/packages/21/7c/f3a601fc1b1f663ff269bfe553654e638651939aa6563e8daa7167c33098/torch-2.12.1-cp314-cp314-win_amd64.whl", hash = "sha256:f6dc4caf7eb4adb38a2d9f536b51db56310fdd1254e69a2d96767e1367c892b3", size = 122987254, upload-time = "2026-06-17T21:06:33.199Z" },
|
| 2611 |
+
{ url = "https://files.pythonhosted.org/packages/e6/8c/b8087556cf81ddd808dbeb34afb8396d7ae7a1694ab489f08b1a0004e7d0/torch-2.12.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:2afbb2bdaa8a95040e733f05492ddf133c3967c9b7ce0abd218d704b6cab437d", size = 88303173, upload-time = "2026-06-17T21:05:06.603Z" },
|
| 2612 |
+
{ url = "https://files.pythonhosted.org/packages/4a/07/fe09d1699fbed2afa10ebc692ff2b99d113f2605b6748cea633989e2789a/torch-2.12.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:97eba061fcb042fed191400b15568990073d67eaacaa6ee9b7ca01dd8b790fe9", size = 426404009, upload-time = "2026-06-17T21:04:57.557Z" },
|
| 2613 |
+
{ url = "https://files.pythonhosted.org/packages/2e/f7/0ce4f6c1962c60ded7270e0a9eb560fb615c92b89d332cf9e3dff36d5ecc/torch-2.12.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:3867b861391701012adb2df93360efb88494dca245a185e3bb7624495cfe3f33", size = 532184292, upload-time = "2026-06-17T21:05:17.526Z" },
|
| 2614 |
+
{ url = "https://files.pythonhosted.org/packages/70/db/e384c12aba30320ca92aaaf557456cbcb26f04b4df307728bb8f019f5000/torch-2.12.1-cp314-cp314t-win_amd64.whl", hash = "sha256:dd15595f8fc764cffde8c6361a3beb6ef69a028c851b1b3e70e077f615980d4e", size = 123231142, upload-time = "2026-06-17T21:05:27.061Z" },
|
| 2615 |
]
|
| 2616 |
|
| 2617 |
[[package]]
|
|
|
|
| 2626 |
{ url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" },
|
| 2627 |
]
|
| 2628 |
|
| 2629 |
+
[[package]]
|
| 2630 |
+
name = "transformers"
|
| 2631 |
+
version = "5.12.1"
|
| 2632 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2633 |
+
dependencies = [
|
| 2634 |
+
{ name = "huggingface-hub" },
|
| 2635 |
+
{ name = "numpy" },
|
| 2636 |
+
{ name = "packaging" },
|
| 2637 |
+
{ name = "pyyaml" },
|
| 2638 |
+
{ name = "regex" },
|
| 2639 |
+
{ name = "safetensors" },
|
| 2640 |
+
{ name = "tokenizers" },
|
| 2641 |
+
{ name = "tqdm" },
|
| 2642 |
+
{ name = "typer" },
|
| 2643 |
+
]
|
| 2644 |
+
sdist = { url = "https://files.pythonhosted.org/packages/aa/7c/8240f612819718100a9346dc28dea6a11370c3ca9c8c6eabadd3dea4ef29/transformers-5.12.1.tar.gz", hash = "sha256:679ee731c8225347889ad4fb3b2c926a62e9da3b7d284e9d12c791da7272466b", size = 8924054, upload-time = "2026-06-15T17:27:50.604Z" }
|
| 2645 |
+
wheels = [
|
| 2646 |
+
{ url = "https://files.pythonhosted.org/packages/df/56/bbd60dd8668055803bf8ba55a81f9b8a8b31497f620109a9671d26a2076d/transformers-5.12.1-py3-none-any.whl", hash = "sha256:2a5e109d2021265df7098ffbb738295acaf5ad256f12cbc586db2ea4dcbb1a8a", size = 11150587, upload-time = "2026-06-15T17:27:46.679Z" },
|
| 2647 |
+
]
|
| 2648 |
+
|
| 2649 |
+
[[package]]
|
| 2650 |
+
name = "triton"
|
| 2651 |
+
version = "3.7.1"
|
| 2652 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2653 |
+
wheels = [
|
| 2654 |
+
{ url = "https://files.pythonhosted.org/packages/7b/f9/19d842d06a08559534fa1eaab6ca551b1bcf40f06620bddec1babaa2772d/triton-3.7.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4a0e1cd4c4a76370ed74a8432a53cea28716827d19e40ffc732233e35ceb3f6", size = 184664887, upload-time = "2026-06-17T20:03:42.913Z" },
|
| 2655 |
+
{ url = "https://files.pythonhosted.org/packages/cd/5e/fce69606f7f240297f163e25539906732b199530d486ce67ae319877e821/triton-3.7.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6744957e9fd610a29680ec2346057d0c86948ed3812468670719f391e94b44a5", size = 197701306, upload-time = "2026-06-17T19:53:13.673Z" },
|
| 2656 |
+
{ url = "https://files.pythonhosted.org/packages/94/fa/f856e24deb462d5f18bd4b5a746957862ab9b6ee5834bda60605ec348366/triton-3.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9497f2e696ee368862a181a90b2dcc03ca978cc4f602abd67c7d81022a6988e1", size = 184692359, upload-time = "2026-06-17T20:03:48.288Z" },
|
| 2657 |
+
{ url = "https://files.pythonhosted.org/packages/c4/6f/fb96d15db6f36d6eae4cafb998c2e0353bf59d7c4ea1662d7497f269134a/triton-3.7.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e40869937a68206ec70d7f25bb7ec6433cb083f9135e1f36dbd318dc449a728", size = 197719725, upload-time = "2026-06-17T19:53:20.419Z" },
|
| 2658 |
+
{ url = "https://files.pythonhosted.org/packages/00/42/c5089d4d9327fcd1e862c599cc2927f39418f84dd11a84cb2ccff9d4787a/triton-3.7.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cdbfc09d9ec58bc5e68321525653220de7515c199e7a8097a97c85e62b52cd0a", size = 184694629, upload-time = "2026-06-17T20:03:53.444Z" },
|
| 2659 |
+
{ url = "https://files.pythonhosted.org/packages/07/42/2c3ac59253ae8892b6f307875263dd23dc875cdf732d3aea40d6d41fb7cb/triton-3.7.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:58c0e131da05134a2a4788ccbcc0c1105cf0f54c8e98f19e34cd465396dc15eb", size = 197729241, upload-time = "2026-06-17T19:53:27.801Z" },
|
| 2660 |
+
{ url = "https://files.pythonhosted.org/packages/40/71/e01aa7ad573883ed9456f130226babdec70b005e098c4d6226a6238e761b/triton-3.7.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe4ea396a06171f1f1f58cbd39c70b09294398f7dd7c620939bab54ad6f934fa", size = 184705764, upload-time = "2026-06-17T20:03:59.064Z" },
|
| 2661 |
+
{ url = "https://files.pythonhosted.org/packages/a4/09/5683146fda6a2b569deb78ccfd8fbfea8bfe55f726b081c0a6bb18dd6f28/triton-3.7.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2020153b08280415ec0da6607834e79166442147e78e144df06b508c75b186d2", size = 197729537, upload-time = "2026-06-17T19:53:35.516Z" },
|
| 2662 |
+
{ url = "https://files.pythonhosted.org/packages/e9/f8/448220c3092019f9fdfab39ec47985968181d67da34b44f6a7f6280a5cbb/triton-3.7.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c58e4c61f0c73b5dba3b5d19b4a7093c32f90dc18b2a7f121a7c16ccd31107b7", size = 184814760, upload-time = "2026-06-17T20:04:04.984Z" },
|
| 2663 |
+
{ url = "https://files.pythonhosted.org/packages/f0/ac/229b7d4589d2e5937310e72c6d46e89599d16a4a12b479ffa1499fee8eb8/triton-3.7.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10ba85fa2cca4a2fbdeb36bf1cb082f2c252bda55bf9fccd74f65ec5bc647e68", size = 197824404, upload-time = "2026-06-17T19:53:42.772Z" },
|
| 2664 |
+
]
|
| 2665 |
+
|
| 2666 |
[[package]]
|
| 2667 |
name = "typer"
|
| 2668 |
version = "0.25.1"
|