Files
EvoScientist-Multi/pyproject.toml
T
Xi Zhang 63969b596d Release/v0.1.4 (#266)
* feat(middleware): reposition code interpreter middleware in the stack

* feat(models): add qwen3.7-plus model entry and update context window comment

* feat(models): add qwen3.7-max and qwen3.7-plus model entries for DashScope

* feat(auxiliary): implement auxiliary model support for background tasks and tool selection

- Added auxiliary model configuration to EvoScientistConfig.
- Introduced _ensure_auxiliary_chat_model function to manage auxiliary model instances.
- Updated onboarding steps to include auxiliary model selection.
- Modified middleware to route tool selection to the auxiliary model when applicable.
- Enhanced tests to cover auxiliary model functionality and configuration.

* feat(steps): update UI backend selection options and descriptions

* Refactor code structure for improved readability and maintainability

* feat(patches): implement OpenRouter response reasoning item stripping to prevent multi-turn errors

* feat: update version to v0.1.4 in badges, README, and pyproject.toml; adjust skill counts in steps.py

* feat(config): add auxiliary model and provider environment variables to test setup
2026-06-07 00:52:59 +01:00

184 lines
4.2 KiB
TOML
Raw 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"
version = "0.1.4"
description = "EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery"
readme = "README.md"
requires-python = ">=3.11"
license = "Apache-2.0"
authors = [
{ name = "Xi Zhang" },
]
maintainers = [
{ name = "Xi Zhang" },
]
keywords = ["ai-scientific", "scientific-discovery", "self-evolving", "ai-scientists", "end-to-end"]
classifiers = [
"Programming Language :: Python :: 3",
]
dependencies = [
"deepagents[quickjs]~=0.6.8",
"langchain>=1.3",
"langchain-anthropic>=1.4",
"langchain-openai>=1.2",
"langchain-nvidia-ai-endpoints>=1.2",
"langchain-google-genai>=4.2",
"langchain-ollama>=1.1",
"langchain-openrouter>=0.2.3",
"tavily-python>=0.7",
"pyyaml>=6.0",
"rich>=15.0",
"prompt-toolkit>=3.0",
"questionary>=2.1",
"typer>=0.24",
"python-dotenv>=1.0",
"langgraph-cli[inmem]>=0.4",
"langgraph-checkpoint-sqlite>=3.0",
"httpx>=0.28",
"psutil>=6.0",
"filelock>=3.16",
"lazy-loader>=0.5",
"markdownify>=1.2",
"nest-asyncio>=1.6",
"langchain-mcp-adapters>=0.2",
# <8.2.7: 8.2.7 Kitty "report-all-keys" breaks CJK input on iTerm2
"textual>=8.0,<8.2.7",
]
[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", "aiohttp>=3.9", "qrcode>=7.4", "certifi>=2024.0"]
feishu = ["lark-oapi>=1.4.0"]
qq = [
"qq-botpy>=1.0",
"cryptography>=41.0",
"qrcode>=7.4",
]
stt = ["faster-whisper>=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",
"qrcode>=7.4",
"certifi>=2024.0",
"lark-oapi>=1.4.0",
"qq-botpy>=1.0",
"cryptography>=41.0",
"qrcode>=7.4",
]
[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"
[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
include = ["EvoScientist*"]
[tool.setuptools.package-data]
EvoScientist = [
"subagents/*.yaml",
"langgraph_dev/*.json",
"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