content: [project]
  name = "wiki-rag"
  description = "A simple RAG implementation using hybrid search with context optimisations against MediaWiki articles."
  keywords = ["rag", "llm", "hybrid", "search", "context", "milvus", "mediawiki", "ai", "research"]
  
  license = "BSD-3-Clause"
  license-files = ["LICENSE"]
  readme = "README.md"
  
  authors = [
      {name = "Eloy Lafuente (stronk7)", email = "stronk7@stronk7.com"},
  ]
  
  classifiers = [
      "Typing :: Typed",
      "Development Status :: 3 - Alpha",
      "Intended Audience :: Developers",
      "Intended Audience :: Education",
      "Intended Audience :: Science/Research",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3",
      "Topic :: Software Development :: Libraries :: Python Modules",
  ]
  
  dynamic = ["version"]
  
  requires-python = ">=3.12"
  dependencies = [
      "aiohttp ~= 3.12.15",
      "cachetools ~= 6.2.0",
      "colorlog ~= 6.9.0",
      "fastapi ~= 0.116.2",
      "langchain ~= 0.3.27",
      "langchain-community ~= 0.3.29",
      "langchain-core ~= 0.3.76",
      "langchain-openai ~= 0.3.33",
      "langfuse ~= 3.5.0",
      "langgraph ~= 0.6.7",
      "langsmith ~= 0.4.28",
      "fastmcp ~= 2.12.3",
      "pymilvus ~= 2.6.2",
      "python-dotenv ~= 1.1.1",
      "tiktoken ~= 0.11.0",
      "tqdm ~= 4.67.1",
      "uvicorn ~= 0.35.0",
  ]
  
  [project.optional-dependencies]
  dev = [
      "build ~= 1.3.0",
      "codespell ~= 2.4.1",
      "conventional-pre-commit ~= 4.2.0",
      "coverage ~= 7.10.6",
      "detect-secrets ~= 1.5.0",
      "git-cliff ~= 2.10.0",
      "pre-commit ~= 4.3.0",
      "pyright ~= 1.1.405",
      "ruff ~= 0.13.1",
  ]
  
  [project.scripts]
  wr-load = "wiki_rag.load.main:main"
  wr-index = "wiki_rag.index.main:main"
  wr-search = "wiki_rag.search.main:main"
  wr-server = "wiki_rag.server.main:main"
  wr-mcp = "wiki_rag.mcp_server.main:main"
  
  [project.urls]
  Homepage = "https://github.com/moodlehq/wiki-rag"
  Documentation = "https://github.com/moodlehq/wiki-rag"
  Repository = "https://github.com/moodlehq/wiki-rag"
  
  [tool.coverage.run]
  branch = true
  source = [
      "wiki_rag",
  ]
  omit = [
      "tests"
  ]
  command_line = "-m unittest discover -t . -s tests"
  
  [tool.pyright]
  include = [
      "wiki_rag"
  ]
  exclude = [
      "tests"
  ]
  
  [tool.ruff]
  line-length = 88
  indent-width = 4
  preview = true
  
  [tool.ruff.lint]
  # https://docs.astral.sh/ruff/rules
  select = [
      "E",    # pycodestyle (errors, all them)
      "F",    # pyflakes
      "I",    # imports
      "N",    # pep8 naming
      "D",    # pydocstyle
      "Q",    # flake8-quotes
      "ASYNC",# flake8-async
      "CPY",  # copyright header
      "EM",   # flake8-errmsg
      "UP",   # pyupgrade
  ]
  ignore = [
      "D203", # 1 blank line required before class docstring (incompatible with D211, that we use)
      "D213", # Multi-line docstring summary should start at the second line (incompatible with D212, that we use)
  ]
  
  [tool.ruff.lint.isort]
  lines-between-types = 1
  
  [tool.ruff.lint.pycodestyle]
  max-line-length = 120
  
  [tool.ruff.lint.per-file-ignores]
  "tests/**/test_**.py" = ["D101", "D102", "D103"] # Don't require doc strings for tests
  
  [tool.codespell]
  ignore-words-list = [
    "upport" # Part of regular expressions in cliff.toml
  ]
  
  [build-system]
  requires = ["setuptools", "setuptools-scm"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools_scm]
  
  [tool.setuptools.packages.find]
  include = ["wiki_rag"]
  