mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
199 lines
5.2 KiB
TOML
199 lines
5.2 KiB
TOML
[build-system]
|
|
build-backend = "poetry.core.masonry.api"
|
|
requires = [
|
|
"poetry-core",
|
|
]
|
|
|
|
[tool.poetry]
|
|
name = "openhands-ai"
|
|
version = "0.56.0"
|
|
description = "OpenHands: Code Less, Make More"
|
|
authors = [ "OpenHands" ]
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
repository = "https://github.com/All-Hands-AI/OpenHands"
|
|
packages = [
|
|
{ include = "openhands/**/*" },
|
|
{ include = "third_party/**/*" },
|
|
{ include = "pyproject.toml", to = "openhands" },
|
|
{ include = "poetry.lock", to = "openhands" },
|
|
]
|
|
include = [
|
|
"openhands/integrations/vscode/openhands-vscode-0.0.1.vsix",
|
|
"microagents/**/*",
|
|
]
|
|
build = "build_vscode.py" # Build VSCode extension during Poetry build
|
|
|
|
[tool.poetry.dependencies]
|
|
python = "^3.12,<3.14"
|
|
litellm = "^1.74.3, !=1.64.4, !=1.67.*" # avoid 1.64.4 (known bug) & 1.67.* (known bug #10272)
|
|
openai = "1.99.9" # Pin due to litellm incompatibility with >=1.100.0 (BerriAI/litellm#13711)
|
|
aiohttp = ">=3.9.0,!=3.11.13" # Pin to avoid yanked version 3.11.13
|
|
google-genai = "*" # To use litellm with Gemini Pro API
|
|
google-api-python-client = "^2.164.0" # For Google Sheets API
|
|
google-auth-httplib2 = "*" # For Google Sheets authentication
|
|
google-auth-oauthlib = "*" # For Google Sheets OAuth
|
|
termcolor = "*"
|
|
docker = "*"
|
|
fastapi = "*"
|
|
toml = "*"
|
|
types-toml = "*"
|
|
uvicorn = "*"
|
|
numpy = "*"
|
|
json-repair = "*"
|
|
browsergym-core = "0.13.3" # integrate browsergym-core as the browsing interface
|
|
html2text = "*"
|
|
deprecated = "*"
|
|
pexpect = "*"
|
|
jinja2 = "^3.1.3"
|
|
python-multipart = "*"
|
|
tenacity = ">=8.5,<10.0"
|
|
zope-interface = "7.2"
|
|
pathspec = "^0.12.1"
|
|
pyjwt = "^2.9.0"
|
|
dirhash = "*"
|
|
tornado = "*"
|
|
python-dotenv = "*"
|
|
rapidfuzz = "^3.9.0"
|
|
whatthepatch = "^1.0.6"
|
|
protobuf = "^5.0.0,<6.0.0" # Updated to support newer opentelemetry
|
|
opentelemetry-api = "^1.33.1"
|
|
opentelemetry-exporter-otlp-proto-grpc = "^1.33.1"
|
|
|
|
libtmux = ">=0.37,<0.40"
|
|
pygithub = "^2.5.0"
|
|
joblib = "*"
|
|
openhands-aci = "0.3.2"
|
|
python-socketio = "^5.11.4"
|
|
sse-starlette = "^2.1.3"
|
|
psutil = "*"
|
|
python-json-logger = "^3.2.1"
|
|
prompt-toolkit = "^3.0.50"
|
|
poetry = "^2.1.2"
|
|
anyio = "4.9.0"
|
|
pythonnet = "*"
|
|
fastmcp = "^2.5.2"
|
|
python-frontmatter = "^1.1.0"
|
|
shellingham = "^1.5.4"
|
|
# TODO: Should these go into the runtime group?
|
|
ipywidgets = "^8.1.5"
|
|
qtconsole = "^5.6.1"
|
|
PyPDF2 = "*"
|
|
python-pptx = "*"
|
|
pylatexenc = "*"
|
|
python-docx = "*"
|
|
bashlex = "^0.18"
|
|
|
|
# TODO: These are integrations that should probably be optional
|
|
redis = ">=5.2,<7.0"
|
|
|
|
google-cloud-aiplatform = "*"
|
|
anthropic = { extras = [ "vertex" ], version = "*" }
|
|
boto3 = "*"
|
|
kubernetes = "^33.1.0"
|
|
pyyaml = "^6.0.2"
|
|
memory-profiler = "^0.61.0"
|
|
jupyter_kernel_gateway = "*"
|
|
|
|
# Third-party runtime dependencies (optional)
|
|
modal = { version = ">=0.66.26,<1.2.0", optional = true }
|
|
runloop-api-client = { version = "0.50.0", optional = true }
|
|
daytona = { version = "0.24.2", optional = true }
|
|
httpx-aiohttp = "^0.1.8"
|
|
e2b-code-interpreter = { version = "^2.0.0", optional = true }
|
|
|
|
[tool.poetry.extras]
|
|
third_party_runtimes = [ "e2b-code-interpreter", "modal", "runloop-api-client", "daytona" ]
|
|
|
|
[tool.poetry.group.dev]
|
|
optional = true
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
ruff = "0.12.5"
|
|
mypy = "1.17.0"
|
|
pre-commit = "4.2.0"
|
|
build = "*"
|
|
types-setuptools = "*"
|
|
pytest = "^8.4.0"
|
|
|
|
[tool.poetry.group.test]
|
|
optional = true
|
|
|
|
[tool.poetry.group.test.dependencies]
|
|
pytest = "*"
|
|
pytest-cov = "*"
|
|
pytest-asyncio = "*"
|
|
pytest-forked = "*"
|
|
pytest-xdist = "*"
|
|
pytest-playwright = "^0.7.0"
|
|
pytest-timeout = "^2.4.0"
|
|
pandas = "*"
|
|
reportlab = "*"
|
|
gevent = ">=24.2.1,<26.0.0"
|
|
|
|
[tool.poetry.group.runtime]
|
|
optional = true
|
|
|
|
[tool.poetry.group.runtime.dependencies]
|
|
jupyterlab = "*"
|
|
notebook = "*"
|
|
flake8 = "*"
|
|
|
|
[tool.poetry.group.evaluation]
|
|
optional = true
|
|
|
|
[tool.poetry.group.evaluation.dependencies]
|
|
streamlit = "*"
|
|
whatthepatch = "*"
|
|
retry = "*"
|
|
evaluate = "*"
|
|
visualswebench = { git = "https://github.com/luolin101/Visual-SWE-bench.git" }
|
|
swegym = { git = "https://github.com/SWE-Gym/SWE-Bench-Package.git" }
|
|
commit0 = "*"
|
|
func_timeout = "*"
|
|
sympy = "*"
|
|
gdown = "*"
|
|
matplotlib = "*"
|
|
seaborn = "*"
|
|
tabulate = "*"
|
|
browsergym = "0.13.3"
|
|
browsergym-webarena = "0.13.3"
|
|
browsergym-miniwob = "0.13.3"
|
|
browsergym-visualwebarena = "0.13.3"
|
|
boto3-stubs = { extras = [ "s3" ], version = "^1.37.19" }
|
|
# transitive dependency, pinned here to avoid conflicts
|
|
pyarrow = "21.0.0"
|
|
datasets = "*"
|
|
joblib = "*"
|
|
swebench = { git = "https://github.com/ryanhoangt/SWE-bench.git", rev = "fix-modal-patch-eval" }
|
|
|
|
[tool.poetry.scripts]
|
|
openhands = "openhands.cli.entry:main"
|
|
|
|
[tool.poetry.group.testgeneval.dependencies]
|
|
fuzzywuzzy = "^0.18.0"
|
|
rouge = "^1.0.1"
|
|
python-levenshtein = ">=0.26.1,<0.28.0"
|
|
tree-sitter-python = "^0.23.6"
|
|
|
|
[tool.poetry-dynamic-versioning]
|
|
enable = true
|
|
style = "semver"
|
|
|
|
[tool.autopep8]
|
|
# autopep8 fights with mypy on line length issue
|
|
ignore = [ "E501" ]
|
|
|
|
[tool.black]
|
|
# prevent black (if installed) from changing single quotes to double quotes
|
|
skip-string-normalization = true
|
|
|
|
[tool.ruff]
|
|
lint.select = [ "D" ]
|
|
# ignore warnings for missing docstrings
|
|
lint.ignore = [ "D1" ]
|
|
lint.pydocstyle.convention = "google"
|
|
|
|
[tool.coverage.run]
|
|
concurrency = [ "gevent" ]
|