pyproject.toml
1 # Copyright 2026 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-cli" 21 dynamic = ["version"] 22 description = "OpenSandbox CLI - Command-line interface for managing sandboxes" 23 authors = [ 24 { name = "OpenSandbox Team", email = "ninan.nn@alibaba-inc.com" } 25 ] 26 license = { file = "LICENSE" } 27 readme = "README.md" 28 requires-python = ">=3.10" 29 keywords = ["sandbox", "cli", "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 "opensandbox>=0.1.7,<0.2.0", 46 "click>=8.1.0,<9.0", 47 "rich>=13.0.0,<14.0", 48 "pyyaml>=6.0,<7.0", 49 "tomli>=2.0.0; python_version < '3.11'", 50 ] 51 52 [project.urls] 53 Homepage = "https://open-sandbox.ai" 54 Repository = "https://github.com/alibaba/OpenSandbox" 55 Documentation = "https://open-sandbox.ai" 56 Issues = "https://github.com/alibaba/OpenSandbox/issues" 57 58 [project.scripts] 59 opensandbox = "opensandbox_cli.main:cli" 60 osb = "opensandbox_cli.main:cli" 61 62 [tool.hatch.version] 63 source = "vcs" 64 65 [tool.hatch.version.raw-options] 66 root = ".." 67 tag_regex = "^cli/v(?P<version>\\d+\\.\\d+\\.\\d+(?:[\\.\\w\\+\\-]*)?)$" 68 git_describe_command = 'git describe --dirty --tags --long --match "cli/v*"' 69 fallback_version = "0.1.0" 70 71 [tool.hatch.build] 72 include = [ 73 "LICENSE", 74 "src/**/py.typed", 75 "src/opensandbox_cli", 76 "src/opensandbox_cli/skills/**", 77 ] 78 79 [tool.hatch.build.targets.wheel] 80 packages = ["src/opensandbox_cli"] 81 82 [dependency-groups] 83 dev = [ 84 "pytest>=7.0.0", 85 "pytest-cov>=4.0.0", 86 "ruff>=0.14.8", 87 "pyright>=1.1.0", 88 ] 89 90 [tool.ruff] 91 target-version = "py310" 92 line-length = 88 93 94 [tool.ruff.lint] 95 select = [ 96 "E", # pycodestyle errors 97 "W", # pycodestyle warnings 98 "F", # pyflakes 99 "I", # isort 100 "B", # flake8-bugbear 101 "C4", # flake8-comprehensions 102 "UP", # pyupgrade 103 ] 104 ignore = [ 105 "E501", # line too long, handled by formatter 106 "B008", # do not perform function calls in argument defaults 107 "C901", # too complex 108 ] 109 110 [tool.ruff.lint.per-file-ignores] 111 "__init__.py" = ["F401"] 112 113 [tool.pyright] 114 typeCheckingMode = "standard" 115 pythonVersion = "3.10" 116 pythonPlatform = "All" 117 include = ["src"] 118 exclude = [ 119 "**/node_modules", 120 "**/__pycache__", 121 ] 122 reportMissingImports = true 123 reportMissingTypeStubs = false 124 125 [tool.pytest.ini_options] 126 minversion = "6.0" 127 addopts = "-ra -q --strict-markers --strict-config" 128 testpaths = ["tests"] 129 python_files = ["test_*.py", "*_test.py"] 130 131 [tool.coverage.run] 132 source = ["src"] 133 branch = true 134 135 [tool.uv.sources] 136 opensandbox = { path = "../sdks/sandbox/python", editable = true }