Backup-bdg/OpenHands
0
1[build-system]2build-backend = "poetry.core.masonry.api"3requires = [4 "poetry-core",5]6 7[tool.poetry]8name = "openhands-ai"9version = "0.41.0"10description = "OpenHands: Code Less, Make More"11authors = [ "OpenHands" ]12license = "MIT"13readme = "README.md"14repository = "https://github.com/All-Hands-AI/OpenHands"15packages = [16 { include = "openhands/**/*" },17 { include = "pyproject.toml", to = "openhands" },18 { include = "poetry.lock", to = "openhands" },19]20 21[tool.poetry.dependencies]22python = "^3.12,<3.14"23litellm = "^1.60.0, !=1.64.4, !=1.67.*" # avoid 1.64.4 (known bug) & 1.67.* (known bug #10272)24aiohttp = ">=3.9.0,!=3.11.13" # Pin to avoid yanked version 3.11.1325google-generativeai = "*" # To use litellm with Gemini Pro API26google-api-python-client = "^2.164.0" # For Google Sheets API27google-auth-httplib2 = "*" # For Google Sheets authentication28google-auth-oauthlib = "*" # For Google Sheets OAuth29termcolor = "*"30docker = "*"31fastapi = "*"32toml = "*"33types-toml = "*"34uvicorn = "*"35numpy = "*"36json-repair = "*"37browsergym-core = "0.13.3" # integrate browsergym-core as the browsing interface38html2text = "*"39e2b = ">=1.0.5,<1.4.0"40pexpect = "*"41jinja2 = "^3.1.3"42python-multipart = "*"43tenacity = ">=8.5,<10.0"44zope-interface = "7.2"45pathspec = "^0.12.1"46pyjwt = "^2.9.0"47dirhash = "*"48tornado = "*"49python-dotenv = "*"50rapidfuzz = "^3.9.0"51whatthepatch = "^1.0.6"52protobuf = "^5.0.0,<6.0.0" # Updated to support newer opentelemetry53opentelemetry-api = "^1.33.1"54opentelemetry-exporter-otlp-proto-grpc = "^1.33.1"55modal = ">=0.66.26,<0.78.0"56runloop-api-client = "0.33.0"57libtmux = ">=0.37,<0.40"58pygithub = "^2.5.0"59joblib = "*"60openhands-aci = "0.3.0"61python-socketio = "^5.11.4"62sse-starlette = "^2.1.3"63psutil = "*"64python-json-logger = "^3.2.1"65prompt-toolkit = "^3.0.50"66poetry = "^2.1.2"67anyio = "4.9.0"68pythonnet = "*"69fastmcp = "^2.5.2"70python-frontmatter = "^1.1.0"71# TODO: Should these go into the runtime group?72ipywidgets = "^8.1.5"73qtconsole = "^5.6.1"74PyPDF2 = "*"75python-pptx = "*"76pylatexenc = "*"77python-docx = "*"78bashlex = "^0.18"79 80# TODO: These are integrations that should probably be optional81redis = ">=5.2,<7.0"82minio = "^7.2.8"83daytona-sdk = "0.18.1"84stripe = ">=11.5,<13.0"85google-cloud-aiplatform = "*"86anthropic = { extras = [ "vertex" ], version = "*" }87boto3 = "*"88 89[tool.poetry.group.dev]90optional = true91 92[tool.poetry.group.dev.dependencies]93ruff = "0.11.11"94mypy = "1.15.0"95pre-commit = "4.2.0"96build = "*"97types-setuptools = "*"98 99[tool.poetry.group.test]100optional = true101 102[tool.poetry.group.test.dependencies]103pytest = "*"104pytest-cov = "*"105pytest-asyncio = "*"106pytest-forked = "*"107pytest-xdist = "*"108openai = "*"109pandas = "*"110reportlab = "*"111gevent = ">=24.2.1,<26.0.0"112 113[tool.poetry.group.runtime]114optional = true115 116[tool.poetry.group.runtime.dependencies]117jupyterlab = "*"118notebook = "*"119jupyter_kernel_gateway = "*"120flake8 = "*"121memory-profiler = "^0.61.0"122 123[tool.poetry.group.evaluation]124optional = true125 126[tool.poetry.group.evaluation.dependencies]127streamlit = "*"128whatthepatch = "*"129retry = "*"130evaluate = "*"131swebench = "^3.0.8"132visualswebench = { git = "https://github.com/luolin101/Visual-SWE-bench.git" }133swegym = { git = "https://github.com/SWE-Gym/SWE-Bench-Package.git" }134commit0 = "*"135func_timeout = "*"136sympy = "*"137gdown = "*"138matplotlib = "*"139seaborn = "*"140tabulate = "*"141browsergym = "0.13.3"142browsergym-webarena = "0.13.3"143browsergym-miniwob = "0.13.3"144browsergym-visualwebarena = "0.13.3"145boto3-stubs = { extras = [ "s3" ], version = "^1.37.19" }146pyarrow = "20.0.0" # transitive dependency, pinned here to avoid conflicts147datasets = "*"148joblib = "*"149 150[tool.poetry.scripts]151openhands = "openhands.cli.main:main"152 153[tool.poetry.group.testgeneval.dependencies]154fuzzywuzzy = "^0.18.0"155rouge = "^1.0.1"156python-levenshtein = ">=0.26.1,<0.28.0"157tree-sitter-python = "^0.23.6"158 159[tool.poetry-dynamic-versioning]160enable = true161style = "semver"162 163[tool.autopep8]164# autopep8 fights with mypy on line length issue165ignore = [ "E501" ]166 167[tool.black]168# prevent black (if installed) from changing single quotes to double quotes169skip-string-normalization = true170 171[tool.ruff]172lint.select = [ "D" ]173# ignore warnings for missing docstrings174lint.ignore = [ "D1" ]175lint.pydocstyle.convention = "google"176 177[tool.coverage.run]178concurrency = [ "gevent" ]179 