pyproject.toml
1 # Copyright 2025 Alibaba Group Holding Ltd. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 [build-system] 16 requires = ["hatchling", "hatch-vcs"] 17 build-backend = "hatchling.build" 18 19 [project] 20 name = "opensandbox-server" 21 dynamic = ["version"] 22 description = "FastAPI control plane for OpenSandbox that manages sandbox lifecycle on Docker (ready) and Kubernetes (planned) runtimes." 23 readme = "README.md" 24 authors = [ 25 { name = "OpenSandbox Team", email = "pangjiping.pjp@alibaba-inc.com" } 26 ] 27 license = { text = "Apache-2.0" } 28 requires-python = ">=3.10" 29 keywords = ["sandbox", "server", "control-plane", "fastapi", "opensandbox"] 30 classifiers = [ 31 "Development Status :: 3 - Alpha", 32 "Intended Audience :: Developers", 33 "License :: OSI Approved :: Apache Software License", 34 "Operating System :: OS Independent", 35 "Programming Language :: Python :: 3", 36 "Programming Language :: Python :: 3 :: Only", 37 "Programming Language :: Python :: 3.10", 38 "Programming Language :: Python :: 3.11", 39 "Programming Language :: Python :: 3.12", 40 "Programming Language :: Python :: 3.13", 41 "Topic :: Software Development :: Libraries", 42 "Typing :: Typed", 43 ] 44 dependencies = [ 45 "docker", 46 "fastapi", 47 "httpx[socks]", 48 "kubernetes", 49 "pydantic", 50 "redis>=5", 51 "pydantic-settings", 52 "pyyaml", 53 "tomli; python_version < \"3.11\"", 54 "uvicorn", 55 "websockets>=14.0", 56 ] 57 58 [project.urls] 59 Homepage = "https://github.com/alibaba/OpenSandbox" 60 Repository = "https://github.com/alibaba/OpenSandbox" 61 Issues = "https://github.com/alibaba/OpenSandbox/issues" 62 63 [project.scripts] 64 opensandbox-server = "opensandbox_server.cli:main" 65 66 [tool.hatch.version] 67 source = "vcs" 68 69 [tool.hatch.version.raw-options] 70 # This package is in a subdirectory; explicitly point setuptools-scm at the git root. 71 root = ".." 72 tag_regex = "^server/v(?P<version>\\d+\\.\\d+\\.\\d+(?:[\\.\\w\\+\\-]*)?)$" 73 git_describe_command = 'git describe --dirty --tags --long --match "server/v*"' 74 fallback_version = "0.1.0.dev0" 75 76 [tool.hatch.build] 77 include = [ 78 "LICENSE", 79 "opensandbox_server", 80 ] 81 82 [tool.hatch.build.targets.wheel] 83 packages = ["opensandbox_server"] 84 85 [dependency-groups] 86 dev = [ 87 "pytest>=7.0.0", 88 "pytest-asyncio>=0.21.0", 89 "pytest-cov>=4.0.0", 90 "ruff>=0.14.8", 91 "pyright>=1.1.0", 92 ] 93 94 [tool.ruff] 95 target-version = "py310" 96 line-length = 100 97 src = ["opensandbox_server", "tests"] 98 99 [tool.ruff.lint] 100 select = ["E4", "E7", "E9", "F"] 101 102 [tool.pyright] 103 typeCheckingMode = "standard" 104 pythonVersion = "3.10" 105 pythonPlatform = "All" 106 107 include = ["opensandbox_server", "tests"] 108 109 exclude = [ 110 "**/node_modules", 111 "**/__pycache__", 112 ] 113 114 venvPath = "." 115 venv = ".venv" 116 117 reportMissingImports = true 118 reportMissingTypeStubs = false