[project] name = "didibrain" version = "0.1.0" description = "Knowledge brain for Didi disinformation analysis — Atomic + multilingual RAG + Lint pass" requires-python = ">=3.11" dependencies = [ "httpx>=0.27", "pydantic>=2.6", "pydantic-settings>=2.2", "structlog>=24.1", "python-dotenv>=1.0", "tenacity>=8.2", "rich>=13.7", "tomli>=2.0", ] [dependency-groups] dev = [ "ruff>=0.4", "mypy>=1.10", "pytest>=8.0", "pytest-asyncio>=0.23", ] scrape = [ "patchright>=1.40", "playwright>=1.40", "feedparser>=6.0", "trafilatura>=1.12", "beautifulsoup4>=4.12", ] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "N", "UP", "B", "SIM", "RET"] ignore = ["E501"] [tool.mypy] python_version = "3.11" strict = true warn_unused_ignores = true [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["shared", "scraper", "extractor", "lint", "didi_client"]