[project] name = "civicsetu" version = "1.0.0" description = "Add your description here" readme = "README.md" authors = [ { name = "adeshboudh16", email = "adeshboudh1@gmail.com" } ] requires-python = ">=3.11" dependencies = [ # --- LLM & Orchestration --- "langgraph>=0.3.0", "langgraph-checkpoint-postgres>=2.0.0", "langchain>=0.3.0", "langchain-core>=0.3.0", "langchain-google-genai>=2.0.0", "litellm>=1.30.0", # --- PDF Parsing & Ingestion --- "pymupdf>=1.24.0", "unstructured[pdf]>=0.16.0", "httpx>=0.27.0", # --- Embeddings (local, free) --- "sentence-transformers>=3.0.0", "ollama>=0.3.0", # --- Vector Store (pgvector) --- "pgvector>=0.3.0", "psycopg[binary]>=3.1.0", "sqlalchemy>=2.0.0", "neo4j>=5.20.0", # --- Reranker --- "flashrank>=0.2.0", # --- API Layer --- "fastapi>=0.115.0", "uvicorn[standard]>=0.30.0", "pydantic>=2.7.0", "pydantic-settings>=2.3.0", # --- Guardrails --- "presidio-analyzer>=2.2.0", "presidio-anonymizer>=2.2.0", # --- Observability --- "arize-phoenix>=4.0.0", "opentelemetry-api>=1.25.0", "opentelemetry-sdk>=1.25.0", # --- Utilities --- "python-dotenv>=1.0.0", "tenacity>=8.3.0", "cachetools>=5.3.0", "structlog>=24.0.0", "einops>=0.8.2", "huggingface-hub[cli]>=1.7.1", ] [project.optional-dependencies] # Phase 1 — add when starting Knowledge Graph graph = [ "neo4j>=5.20.0", ] # Phase 2 — add when scanned PDFs appear ocr = [ "surya-ocr>=0.6.0", ] # Evaluation suite eval = [ "ragas>=0.2.0", "datasets>=2.20.0", ] # Dev tooling — not in prod dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "pytest-cov>=5.0.0", "httpx>=0.27.0", "ruff>=0.5.0", "mypy>=1.10.0", "pre-commit>=3.7.0", ] [project.scripts] civicsetu = "civicsetu:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/civicsetu"] [tool.ruff] line-length = 120 target-version = "py311" src = ["src"] [tool.ruff.lint] select = ["E", "F", "I", "UP"] [tool.mypy] python_version = "3.11" strict = false ignore_missing_imports = true packages = ["civicsetu"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" addopts = "--tb=short -q" [dependency-groups] dev = [ "pytest>=9.0.2", "pytest-asyncio>=1.3.0", ]