[project]
name = "markdown-rag"
version = "0.2.0"
description = "A Retrieval Augmented Generation (RAG) system for markdown documentation with intelligent rate limiting and MCP server integration."
readme = "README.md"
license = { text = "MIT" }
requires-python = ">=3.11"
dependencies = [
"langchain>=1.1.0",
"langchain-postgres>=0.0.16",
"langchain-text-splitters>=1.0.0",
"mcp>=1.22.0",
"pydantic-settings>=2.12.0",
]
[project.scripts]
markdown-rag = "markdown_rag:main"
[project.optional-dependencies]
google = [
"langchain-google-genai>=4.1.1",
]
ollama = [
"langchain-ollama>=1.0.1",
]
[build-system]
requires = ["uv_build>=0.9.5,<0.10.0"]
build-backend = "uv_build"
[tool.ruff]
line-length = 79
target-version = "py311"
[tool.ruff.lint]
ignore = ["A002", "ANN003", "ANN204", "ANN401", "D100", "D417"]
select = ["A", "ANN", "D", "E", "F", "I", "N", "UP", "W"]
[tool.ruff.lint.flake8-annotations]
allow-star-arg-any = true
mypy-init-return = true
[tool.ruff.lint.pydocstyle]
convention = "google"
ignore-decorators = ["typing.overload"]
[tool.mypy]
plugins = ["pydantic.mypy"]
ignore_missing_imports = true
check_untyped_defs = true
follow_imports = "silent"
warn_return_any = true
mypy_path = "$MYPY_CONFIG_FILE_DIR/src"
[dependency-groups]
dev = [
"mypy>=1.18.2",
]