# Copyright 2025 Alibaba Group Holding Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. [build-system] requires = ["hatchling", "hatch-vcs"] build-backend = "hatchling.build" [project] name = "opensandbox-server" dynamic = ["version"] description = "FastAPI control plane for OpenSandbox that manages sandbox lifecycle on Docker (ready) and Kubernetes (planned) runtimes." readme = "README.md" authors = [ { name = "OpenSandbox Team", email = "pangjiping.pjp@alibaba-inc.com" } ] license = { text = "Apache-2.0" } requires-python = ">=3.10" keywords = ["sandbox", "server", "control-plane", "fastapi", "opensandbox"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries", "Typing :: Typed", ] dependencies = [ "docker", "fastapi>=0.137.0", "starlette>=1.3.1", "python-multipart>=0.0.31", "httpx[socks]", "kubernetes", "pydantic", "redis>=5", "pydantic-settings>=2.14.2", "pyyaml", "tomli; python_version < \"3.11\"", "uvicorn[standard]", "websockets>=14.0", ] [project.urls] Homepage = "https://github.com/opensandbox-group/OpenSandbox" Repository = "https://github.com/opensandbox-group/OpenSandbox" Issues = "https://github.com/opensandbox-group/OpenSandbox/issues" [project.scripts] opensandbox-server = "opensandbox_server.cli:main" [tool.hatch.version] source = "vcs" [tool.hatch.version.raw-options] # This package is in a subdirectory; explicitly point setuptools-scm at the git root. root = ".." tag_regex = "^server/v(?P\\d+\\.\\d+\\.\\d+(?:[\\.\\w\\+\\-]*)?)$" git_describe_command = 'git describe --dirty --tags --long --match "server/v*"' fallback_version = "0.1.0.dev0" [tool.hatch.build] include = [ "LICENSE", "opensandbox_server", ] [tool.hatch.build.targets.wheel] packages = ["opensandbox_server"] [dependency-groups] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "pytest-cov>=4.0.0", "ruff>=0.14.8", "pyright>=1.1.0", ] [tool.ruff] target-version = "py310" line-length = 100 src = ["opensandbox_server", "tests"] [tool.ruff.lint] select = ["E4", "E7", "E9", "F"] [tool.pyright] typeCheckingMode = "standard" pythonVersion = "3.10" pythonPlatform = "All" include = ["opensandbox_server", "tests"] exclude = [ "**/node_modules", "**/__pycache__", ] venvPath = "." venv = ".venv" reportMissingImports = true reportMissingTypeStubs = false