Files
EvoScientist/pyproject.toml
T
m4 c2743251e9 Initial commit of EvoScientist framework
Self-evolving AI scientist framework built on LangGraph/LangChain with
CLI/TUI core, FastAPI gateway, and Next.js frontend.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-07-13 08:07:45 +08:00

192 lines
4.3 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[project]
name = "EvoScientist"
dynamic = ["version"]
description = "EvoScientist core agent and command-line interface"
readme = "README.md"
requires-python = ">=3.11,<3.13"
license = "Apache-2.0"
authors = [
{ name = "BoYang" },
]
maintainers = [
{ name = "BoYang" },
]
keywords = ["ai-scientific", "scientific-discovery", "self-evolving", "ai-scientists", "end-to-end"]
classifiers = [
"Programming Language :: Python :: 3",
]
dependencies = [
"deepagents>=0.5.1",
"langchain>=1.2.12",
"langchain-anthropic>=1.4.0",
"langchain-openai>=1.1",
"langchain-nvidia-ai-endpoints>=0.3",
"langchain-google-genai>=4.2.1",
"langchain-ollama>=1.0",
"langchain-openrouter>=0.2.1",
"tavily-python>=0.7",
"pyyaml>=6.0",
"rich>=14.0",
"prompt-toolkit>=3.0",
"questionary>=2.0.1",
"typer>=0.12",
"python-dotenv>=1.0",
"langgraph-cli[inmem]>=0.4",
"langgraph-checkpoint-postgres>=3.1.0",
"psycopg[binary]>=3.3",
"httpx>=0.27",
"markdownify>=0.14",
"nest-asyncio>=1.6",
"langchain-mcp-adapters>=0.1",
"textual>=0.80",
"bcrypt>=4.0",
"pydantic>=2.0",
"arxiv-mcp-server>=0.4.11",
"fastmcp>=3.2.4",
"python-docx>=1.2.0",
"asyncpg>=0.31.0",
]
[dependency-groups]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"pytest-timeout>=2.4",
"ruff>=0.5",
"build>=1.0",
"pre-commit>=3.5.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"pytest-timeout>=2.4",
"ruff>=0.5",
"build>=1.0",
"pre-commit>=3.5.0",
]
telegram = ["python-telegram-bot>=21.0"]
discord = ["discord.py>=2.3"]
slack = ["slack-sdk>=3.27", "aiohttp>=3.9"]
wechat = ["pycryptodome>=3.20"]
feishu = ["lark-oapi>=1.4.0"]
qq = ["qq-botpy>=1.0"]
stt = ["faster-whisper>=1.0"]
search = [
"zhipuai>=2.1.5",
"firecrawl-py>=4.27.1",
"exa-py>=1.0",
]
search-zhipu = ["zhipuai>=2.1.5"]
search-firecrawl = ["firecrawl-py>=4.27.1"]
search-exa = ["exa-py>=1.0"]
oauth = ["ccproxy-api>=0.2.7"]
all-channels = [
"python-telegram-bot>=21.0",
"discord.py>=2.3",
"aiohttp>=3.9",
"slack-sdk>=3.27",
"pycryptodome>=3.20",
"lark-oapi>=1.4.0",
"qq-botpy>=1.0",
]
[project.urls]
"Homepage" = "https://github.com/EvoScientist/EvoScientist"
"Bug Tracker" = "https://github.com/EvoScientist/EvoScientist/issues"
"Documentation" = "https://github.com/EvoScientist/EvoScientist#readme"
[project.scripts]
evoscientist = "EvoScientist.cli:main"
EvoScientist = "EvoScientist.cli:main"
evosci = "EvoScientist.cli:main"
EvoSci = "EvoScientist.cli:main"
evo-admin = "EvoScientist.cli:admin_main"
[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"
[tool.uv]
override-dependencies = [
"pyjwt>=2.12.1",
]
[tool.setuptools.packages.find]
include = ["EvoScientist*"]
[tool.setuptools.dynamic]
version = { attr = "EvoScientist._version.__version__" }
[tool.setuptools.package-data]
EvoScientist = ["subagent.yaml", "skills/**/*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
filterwarnings = [
"ignore::UserWarning:langchain_nvidia_ai_endpoints",
]
[tool.ruff]
# Exclude a variety of commonly ignored directories.
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".git-rewrite",
".hg",
".ipynb_checkpoints",
".mypy_cache",
".nox",
".pants.d",
".pyenv",
".pytest_cache",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
".vscode",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"site-packages",
"venv",
]
line-length = 88
indent-width = 4
target-version = "py311"
[tool.ruff.lint]
select = [
"E", "W", # pycodestyle (Error & Warning)
"F", # Pyflakes (Logical errors)
"I", # isort (Import sorting)
"B", # flake8-bugbear (Common bugs)
"C4", # flake8-comprehensions (List/Dict perf)
"UP", # pyupgrade (Modern Python syntax)
"PT", # flake8-pytest-style (If using Pytest)
"PLE", # Pylint Error
"RUF", # Ruff specific rules
"FURB", # Refurb rules
]
ignore = [
"E501", # Formatter takes care of that
]
fixable = ["ALL"]
unfixable = []
allowed-confusables = ["–", "❯"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = false