[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "deer-flow"
version = "0.1.0"
description = "DeerFlow project"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "httpx>=0.28.1",
    # LangChain 1.x core packages
    "langchain>=1.0.0",
    "langchain-core>=1.0.0",
    "langchain-community>=0.3.19",
    "langchain-experimental>=0.3.4",
    "langchain-openai>=0.3.8",
    "langchain-text-splitters>=0.3.6",
    # LangGraph
    "langgraph>=0.3.5",
    # Other dependencies
    "readabilipy>=0.3.0",
    "python-dotenv>=1.0.1",
    "socksio>=1.0.0",
    "markdownify>=1.1.0",
    "fastapi>=0.110.0",
    "uvicorn>=0.27.1",
    "sse-starlette>=1.6.5",
    "pandas>=2.2.3",
    "numpy>=2.2.3",
    "yfinance>=0.2.54",
    "litellm>=1.63.11",
    "json-repair>=0.7.0",
    "jinja2>=3.1.3",
    "duckduckgo-search>=8.0.0",
    "ddgs>=9.0.0",
    "inquirerpy>=0.3.4",
    "arxiv>=2.2.0",
    "mcp>=1.11.0",
    "langchain-mcp-adapters>=0.0.9",
    "langchain-deepseek>=0.1.3",
    "langchain-google-genai>=2.0.6",
    "wikipedia>=1.4.0",
    "langchain-tavily>=0.2.0",
    "langgraph-checkpoint-mongodb>=0.1.4",
    "langgraph-checkpoint-postgres==2.0.21",
    "pymilvus>=2.3.0",
    "langchain-milvus>=0.2.1",
    "psycopg[binary]>=3.2.9",
    "qdrant-client>=1.15.1",
    "langchain-qdrant>=0.2.0",
]

[project.optional-dependencies]
dev = [
    "ruff",
    "langgraph-cli[inmem]>=0.2.10",
]
test = [
    "pytest>=7.4.0",
    "pytest-cov>=4.1.0",
    "pytest-asyncio>=1.0.0",
    "pytest-cov>=6.0.0",
    "asyncpg-stubs>=0.30.2",
    "mongomock>=4.3.0",
    "pytest-postgresql>=7.0.2",
]

[tool.uv]
required-version = ">=0.6.15"

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "-v --cov=src --cov-report=term-missing"
filterwarnings = [
    "ignore::DeprecationWarning",
    "ignore::UserWarning",
]

[tool.coverage.report]
fail_under = 25

[tool.hatch.build.targets.wheel]
packages = ["src"]

[tool.ruff]
line-length = 88
indent-width = 4
target-version = "py312"
extend-include = ["*.pyi"]

[tool.ruff.format]
indent-style = "space"
line-ending = "auto"
exclude = ['^/build/']

