content: [project]
  name = "open_deep_research"
  version = "0.0.16"
  description = "Planning, research, and report generation."
  authors = [
      { name = "Lance Martin" }
  ]
  readme = "README.md"
  license = { text = "MIT" }
  requires-python = ">=3.10"
  dependencies = [
      "langgraph>=0.5.4",
      "langchain-community>=0.3.9",
      "langchain-openai>=0.3.7",
      "langchain-anthropic>=0.3.15",
      "langchain-mcp-adapters>=0.1.6",
      "langchain-deepseek>=0.1.2",
      "langchain-tavily",
      "langchain-groq>=0.2.4",
      "openai>=1.61.0",
      "tavily-python>=0.5.0",
      "arxiv>=2.1.3",
      "pymupdf>=1.25.3",
      "xmltodict>=0.14.2",
      "linkup-sdk>=0.2.3",
      "duckduckgo-search>=3.0.0",
      "exa-py>=1.8.8",
      "requests>=2.32.3",
      "beautifulsoup4==4.13.3",
      "python-dotenv>=1.0.1",
      "pytest",
      "httpx>=0.24.0",
      "markdownify>=0.11.6",
      "azure-identity>=1.21.0",
      "azure-search>=1.0.0b2",
      "azure-search-documents>=11.5.2",
      "rich>=13.0.0",
      "langgraph-cli[inmem]>=0.3.1",
      "langsmith>=0.3.37",
      "langchain-google-vertexai>=2.0.25",
      "langchain-google-genai>=2.1.5",
      "ipykernel>=6.29.5",
      "supabase>=2.15.3",
      "mcp>=1.9.4",
      "pandas>=2.3.1",
      "openpipe-art[langgraph,skypilot,plotting]==0.4.10",
      "polars>=1.32.3",
  ]
  
  [project.optional-dependencies]
  dev = ["mypy>=1.11.1", "ruff>=0.6.1"]
  
  [build-system]
  requires = ["setuptools>=73.0.0", "wheel"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools]
  packages = ["open_deep_research", "legacy", "tests"]
  
  [tool.setuptools.package-dir]
  "open_deep_research" = "src/open_deep_research"
  "legacy" = "src/legacy"
  "tests" = "tests"
  
  [tool.setuptools.package-data]
  "*" = ["py.typed"]
  
  [tool.ruff]
  lint.select = [
      "E",    # pycodestyle
      "F",    # pyflakes
      "I",    # isort
      "D",    # pydocstyle
      "D401", # First line should be in imperative mood
      "T201",
      "UP",
  ]
  lint.ignore = [
      "UP006",
      "UP007",
      "UP035",
      "D417",
      "E501",
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "tests/*" = ["D", "UP"]
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  