Spaces:
Runtime error
Runtime error
| [build-system] | |
| requires = ["hatchling"] | |
| build-backend = "hatchling.build" | |
| [project] | |
| name = "report-genius-ai" | |
| version = "0.1.0" | |
| description = "RICS-style Retrieval-Augmented Generation system for property survey reports" | |
| readme = "README.md" | |
| license = { text = "MIT" } | |
| requires-python = ">=3.11" | |
| dependencies = [ | |
| # Web framework | |
| "fastapi>=0.111.0", | |
| "uvicorn[standard]>=0.29.0", | |
| "python-multipart>=0.0.9", | |
| # ββ LangChain framework & integrations βββββββββββββββββββββββββββββββββββ | |
| "langchain>=0.3.0", | |
| "langchain-core>=0.3.0", | |
| "langchain-openai>=0.2.0", # ChatOpenAI + OpenAIEmbeddings via LCEL | |
| "langchain-community>=0.3.0", # Document loaders, FAISS vectorstore | |
| "langchain-huggingface>=0.1.0", # HuggingFaceEmbeddings (local, free) | |
| "langchain-text-splitters>=0.3.0", # RecursiveCharacterTextSplitter | |
| # Document loading back-ends used by LangChain community loaders | |
| "python-docx>=1.1.0", # provides `docx` module used by docx_builder + export API | |
| "docx2txt>=0.8", # required by Docx2txtLoader | |
| "pymupdf>=1.24.0", # required by PyMuPDFLoader | |
| "pypdf>=4.0.0", # used directly in /extract-notes for PDF text extraction | |
| "faiss-cpu>=1.8.0", | |
| # OpenAI SDK β used directly by inspector_loop.py (tool-calling loop) | |
| # langchain-openai depends on it but listing explicitly pins the runtime dep. | |
| "openai>=1.30.0", | |
| # Kept for tiktoken-based token counting in prompt builder | |
| "tiktoken>=0.7.0", | |
| # ββ LLM throttling / logging helpers βββββββββββββββββββββββββββββββββββββ | |
| "tenacity>=8.5.0", | |
| "structlog>=24.1.0", | |
| # Local embedding model weights (used via langchain-huggingface) | |
| "sentence-transformers>=3.0.0", | |
| # Data & persistence | |
| "pydantic>=2.7.0", | |
| "pydantic-settings>=2.3.0", | |
| "sqlalchemy>=2.0.30", | |
| "aiosqlite>=0.20.0", | |
| # Utilities | |
| "numpy>=1.26.0", | |
| "python-dateutil>=2.9.0", | |
| # Deterministic redaction: exact-string PII wipe (zero-AI, zero-network) | |
| "flashtext>=2.7", | |
| # Phase-1 retrieval (optional Qdrant + hybrid BM25) | |
| "qdrant-client>=1.9.0", | |
| "rank-bm25>=0.2.2", | |
| # Phase 3 β Redis rate limits + job queue (optional at runtime if redis_url unset) | |
| "redis>=5.0.0", | |
| ] | |
| [project.optional-dependencies] | |
| temporal = [ | |
| "temporalio>=1.7.0", | |
| ] | |
| dev = [ | |
| "pytest>=8.2.0", | |
| "pytest-asyncio>=0.23.0", | |
| "httpx>=0.27.0", | |
| "pytest-cov>=5.0.0", | |
| "black>=24.4.0", | |
| "ruff>=0.4.0", | |
| "mypy>=1.10.0", | |
| ] | |
| [tool.black] | |
| line-length = 88 | |
| target-version = ["py311"] | |
| [tool.ruff] | |
| line-length = 88 | |
| target-version = "py311" | |
| [tool.ruff.lint] | |
| select = ["E", "F", "I", "N", "W", "UP", "B"] | |
| ignore = ["E501", "B008"] | |
| [tool.mypy] | |
| python_version = "3.11" | |
| strict = true | |
| ignore_missing_imports = true | |
| plugins = ["pydantic.mypy"] | |
| # Tests use pytest fixtures and mocks; strict typing them adds little value. | |
| exclude = ["^app/tests/"] | |
| [tool.pytest.ini_options] | |
| asyncio_mode = "auto" | |
| testpaths = ["app/tests"] | |
| addopts = "--cov=app --cov-report=term-missing -q" | |
| [tool.hatch.build.targets.wheel] | |
| packages = ["app"] | |