[project] name = "paper-survey-agent" version = "0.1.0" description = "LLM-based agent for automated scientific literature survey" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} dependencies = [ "openai>=1.0.0", "arxiv>=2.0.0", "pydantic>=2.0.0", "pydantic-settings>=2.0.0", "python-dotenv>=1.0.0", "httpx>=0.25.0", "gradio==6.1.0", "rapidfuzz>=3.0.0", "tenacity>=8.0.0", "pymupdf>=1.26.7", "litellm>=1.80.10", "loguru>=0.7.3", ] [dependency-groups] dev = [ "pytest>=7.0.0", "pytest-cov>=4.0.0", "pytest-asyncio>=0.21.0", "pytest-mock>=3.0.0", "ipykernel", "mypy", "pre-commit", "ipywidgets", "ruff", ] # [build-system] # requires = ["hatchling"] # build-backend = "hatchling.build" [tool.pytest.ini_options] python_files = ["test_*.py", "*_test.py"] testpaths = ["tests"] [tool.ruff] line-length = 119 [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long, handled by black "B008", # do not perform function calls in argument defaults "C901", # too complex "D1", # Allow missing docstrings. "D417", # Don't require descriptions for all arguments. "F401", # unused imports ] [tool.mypy] ignore_missing_imports = true [tool.ruff.format] quote-style = "double" [tool.ruff.lint.isort] force-sort-within-sections = true combine-as-imports = true split-on-trailing-comma = false lines-after-imports = 2 [tool.ruff.lint.flake8-quotes] docstring-quotes = "double" multiline-quotes = "double" inline-quotes = "double"