OpenSpace/pyproject.toml
2026-07-17 11:43:42 +08:00

137 lines
3.4 KiB
TOML

[build-system]
requires = ["setuptools>=68.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "openspace"
version = "2.0.0"
description = "OpenSpace"
readme = "README.md"
requires-python = ">=3.12"
license = {text = "MIT"}
authors = [
{name = "OpenSpace Team@HKUDS"}
]
dependencies = [
"litellm>=1.70.0,<1.82.7", # pinned to avoid PYSEC-2026-2 supply-chain compromise (1.82.7/1.82.8 were malicious)
"python-dotenv>=1.0.0",
"openai>=1.0.0",
"jsonschema>=4.25.0",
"bashlex>=0.18",
"mcp>=1.0.0",
"anthropic>=0.71.0",
"pillow>=12.0.0",
"numpy>=1.24.0",
"colorama>=0.4.6",
"flask>=3.1.0",
"pyautogui>=0.9.54",
"pydantic>=2.12.0",
"aiohttp>=3.10.0",
"requests>=2.32.0",
"websockets>=13.0",
]
[project.optional-dependencies]
macos = [
"pyobjc-core>=12.0",
"pyobjc-framework-cocoa>=12.0",
"pyobjc-framework-quartz>=12.0",
"atomacos>=3.2.0",
]
linux = [
"python-xlib>=0.33",
"pyatspi>=2.38.0",
"numpy>=1.24.0",
]
windows = [
"pywinauto>=0.6.8",
"pywin32>=306",
"PyGetWindow>=0.0.9",
]
dev = [
"pytest>=7.0.0",
"pytest-asyncio>=0.21.0",
"black>=23.0.0",
"flake8>=6.0.0",
"mypy>=1.0.0",
]
communication = [
"lark-oapi>=1.4.20",
]
all = [
"openspace[macos]; sys_platform == 'darwin'",
"openspace[linux]; sys_platform == 'linux'",
"openspace[windows]; sys_platform == 'win32'",
"openspace[communication,dev]",
]
[project.urls]
Repository = "https://github.com/HKUDS/OpenSpace"
"Bug Tracker" = "https://github.com/HKUDS/OpenSpace/issues"
[project.scripts]
openspace = "openspace.entrypoints.cli.main:run_main"
openspace-server = "openspace.local_server.main:main"
openspace-mcp = "openspace.entrypoints.mcp.server:run_mcp_server"
openspace-cloud-auth = "openspace.cloud.cli.auth:main"
openspace-download-skill = "openspace.cloud.cli.download_skill:main"
openspace-upload-skill = "openspace.cloud.cli.upload_skill:main"
openspace-dashboard = "openspace.entrypoints.dashboard.server:main"
openspace-gateway = "openspace.entrypoints.gateway.server:run_main"
[tool.setuptools]
packages = {find = {where = ["."], include = ["openspace*"]}}
[tool.setuptools.package-data]
openspace = [
".env.example",
"config/*.json",
"config/*.json.example",
"config/README.md",
"communication/bridges/whatsapp/*",
"local_server/config.json",
"local_server/README.md",
"local_server/requirements.txt",
"local_server/run.sh",
"host_skills/README.md",
"host_skills/*/.skill_id",
"host_skills/*/SKILL.md",
"protocol/schema/*.json",
"skills/*/.skill_id",
"skills/*/SKILL.md",
"packaged/tui/**/*",
"packaged/dashboard/**/*",
]
[tool.setuptools.exclude-package-data]
openspace = [
"packaged/tui/**/__tests__/*",
"packaged/tui/**/*.test.*",
"packaged/tui/**/*.spec.*",
"packaged/tui/node_modules/@types/node/test.d.ts",
"packaged/dashboard/**/__tests__/*",
"packaged/dashboard/**/*.test.*",
"packaged/dashboard/**/*.spec.*",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
markers = [
"playwright: requires the Playwright Python package and a launchable Chromium browser; must fail instead of skipping when configured as a CI gate",
]
norecursedirs = [
".git",
".pytest_cache",
"__pycache__",
"build",
"dist",
"logs",
"node_modules",
"openspace.egg-info",
]