File size: 2,011 Bytes
3fea70b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[project]
name = "ragsolver"
version = "0.1.0"
description = "Sistema multiagente de razonamiento verificable (RAG + Lean 4/Mathlib) — UPTC"
requires-python = ">=3.12,<3.13"
dependencies = [
    "pydantic>=2.9",
    "pyyaml>=6.0",
    "lancedb>=0.17",
    "pyarrow>=17.0",
    "sentence-transformers>=3.3",
    "transformers>=4.51",
    "torch>=2.4",
    "huggingface_hub>=0.26",
    "pymupdf>=1.24",
    "langgraph>=0.2",
    "lean-interact>=0.7",
    "httpx>=0.27",  # ragsolver/llm.py, rag/embed.py (backend llama): usado directamente, no sólo transitivo (auditoría DEP-1)
    "tenacity>=8.0",  # ragsolver/llm.py: reintentos del cliente LLM
]

[project.optional-dependencies]
# Sólo necesario en la Fase 2 (ingesta de PDFs); pesado (modelos de layout/formula), se instala aparte.
ingest = ["mineru>=2.5,<5"]
# Demo Gradio (demo/app.py): gradio llegaba sólo como transitiva del extra `ingest` (vía mineru);
# con `uv sync` a secas la demo fallaba en silencio (auditoría DEP-1).
demo = ["gradio>=5.0"]
dev = [
    "pytest>=8.0",
    "pytest-cov>=5.0",
    "ranx>=0.3",  # sólo se usa en tests/test_metrics.py para verificar rag/metrics.py contra la referencia (docs/DECISIONS.md #43); nunca en producción
]
# ponytail: `pandas` y `accelerate` no se importan en ningún módulo de ragsolver/scripts/demo (grep
# verificado); llegan igual como transitivas de `ranx`/`gradio` (pandas) y `mineru` (accelerate) en
# los entornos que ya los necesitan. Confirmado sin ellos instalados (docs/DECISIONS.md #78):
# tests/test_retriever_integration.py carga el embedder Y el reranker reales (rerank=True) en verde.

[tool.uv]
# ponytail: sin flash-attn por defecto (CUDA-only, no compila en ROCm — ver docs/PLAN_RAG.md §9.4).
# Añadir sólo si la máquina de ejecución es NVIDIA y se quiere el acelerador opcional.

[project.scripts]
ragsolver = "ragsolver.cli:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/ragsolver"]