[build-system] requires = ["setuptools>=68.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "video-tree-trm" version = "0.1.0" description = "自进化搜索 Agent + 可训练递归检索器,在层次化视频树上实现长视频理解" requires-python = ">=3.11" dependencies = [ "torch>=2.1", "pluggy>=1.3", "loguru>=0.7", "openai>=1.30", "httpx>=0.27", "sentence-transformers>=3.0", "numpy>=1.26", "pydantic>=2.5", "pydantic-settings>=2.1", "pyyaml>=6.0", "python-dotenv>=1.0", "opencv-python-headless>=4.9", "json-repair>=0.28", "arq>=0.26", "redis>=5.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-cov>=5.0", "pytest-asyncio>=0.23", "ruff>=0.5", "radon>=6.0", ] [tool.setuptools.packages.find] include = ["core*", "app*", "adapters*"] [tool.pytest.ini_options] pythonpath = [".", ".claude/tools"] testpaths = ["tests"] markers = [ "requires_redis: 需要可达的 Redis(无则 skip)", "requires_gpu: 需要 GPU(无则 skip)", "slow: 慢速测试(CI 按需跑)", ] asyncio_mode = "auto" [tool.ruff] target-version = "py311" line-length = 100 [tool.ruff.lint] select = ["E", "F", "W", "I", "N", "UP", "B", "A", "C4", "SIM", "TCH"] ignore = ["E501"] [tool.ruff.lint.isort] known-first-party = ["core", "app", "adapters"]