[project] name = "graph-rag" version = "0.1.0" description = "Agentic Graph RAG as a Service - Production-grade knowledge graph platform" readme = "README.md" requires-python = ">=3.12" authors = [ {name = "Your Name", email = "your.email@example.com"} ] keywords = ["graph", "rag", "llm", "knowledge-graph", "neo4j", "langgraph", "agents"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Topic :: Software Development :: Libraries :: Python Modules", "Programming Language :: Python :: 3.12", ] dependencies = [ "fastapi[standard]>=0.129.0", "uvicorn[standard]>=0.41.0", "llama-index-core>=0.14.14", "langgraph>=1.0.8", "langchain-core>=1.2.13", "neo4j>=5.28.0,<6.0.0", "redis>=7.2.0", "celery>=5.6.2", "pydantic>=2.12.5", "pydantic-settings>=2.13.0", "python-multipart>=0.0.22", "httpx>=0.28.1", "llama-index-llms-openai>=0.6.18", "llama-index-llms-anthropic>=0.10.8", "llama-index-llms-gemini>=0.6.2", "llama-index-embeddings-gemini>=0.1.0", "llama-index-llms-ollama>=0.9.1", "llama-index-embeddings-ollama>=0.8.6", "llama-index-graph-stores-neo4j>=0.5.1", "llama-parse>=0.6.10", "opentelemetry-api>=1.39.1", "opentelemetry-sdk>=1.39.1", "opentelemetry-instrumentation-fastapi>=0.60b1", "python-jose[cryptography]>=3.5.0", "passlib[bcrypt]>=1.7.4", "aiofiles>=25.1.0", "pypdf>=6.7.1", "python-magic-bin>=0.4.14", "openpyxl>=3.1.2", "python-pptx>=0.6.23", "beautifulsoup4>=4.12.3", "crawl4ai>=0.4.0", "markdownify>=1.2.2", "flower>=2.0.1", "bcrypt>=4.0.0", # used directly in auth.py (not via passlib) ] [project.optional-dependencies] dev = [ "pytest>=9.0.2", "pytest-asyncio>=1.3.0", "black>=24.0.0", "ruff>=0.1.0", ] [project.scripts] graph-rag = "graph_rag_service.main:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/graph_rag_service"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] [tool.black] line-length = 100 target-version = ['py312'] [tool.ruff] line-length = 100 target-version = "py312"