Files
OpenShell/pyproject.toml
Simon Scatton 455883905a fix(python): remove CLI from wheel (#2321)
The Maturin-based wheel packaging was a historical remnant from when the local gateway launch path and OpenShell CLI were coupled in one binary. The gateway and CLI now ship as standalone artifacts, so the Python distribution should contain only the SDK.

Build a single platform-independent setuptools wheel, verify that it cannot contain native code or an openshell entry point, and simplify the release jobs and documentation for SDK-only PyPI installs.

Signed-off-by: Simon Scatton <sscatton@nvidia.com>
2026-08-25 13:20:42 +00:00

124 lines
3.0 KiB
TOML

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
[build-system]
requires = ["setuptools>=80", "setuptools-scm[simple]>=8"]
build-backend = "setuptools.build_meta"
[project]
name = "openshell"
dynamic = ["version"]
description = "OpenShell is the safe, private runtime for autonomous AI agents. "
license = "Apache-2.0"
readme = "README.md"
authors = [{ name = "NVIDIA Inc." }]
requires-python = ">=3.11"
dependencies = [
"cloudpickle>=3.0",
"grpcio>=1.60",
"httpx>=0.27",
"protobuf>=4.25",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: Information Technology",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Security",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS :: MacOS X",
]
keywords = ["agent", "sandbox", "nvidia"]
[project.urls]
source = "https://github.com/NVIDIA/OpenShell"
documentation = "https://docs.nvidia.com/openshell/latest/"
[dependency-groups]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"pytest-cov>=4.0",
"pytest-xdist>=3.0",
"ruff>=0.4",
"ty>=0.0.1a6",
"grpcio-tools>=1.60",
"pyelftools>=0.30",
"pyyaml==6.0.2",
"types-pyyaml>=6.0.12.20260518",
]
[tool.setuptools]
package-dir = { "" = "python" }
include-package-data = false
[tool.setuptools.packages.find]
where = ["python"]
include = ["openshell*"]
namespaces = false
[tool.setuptools.package-data]
openshell = ["py.typed", "_proto/*.py", "_proto/*.pyi"]
[tool.ruff]
target-version = "py311"
line-length = 88
exclude = ["python/openshell/_proto"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # Pyflakes
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"UP", # pyupgrade
"ARG", # flake8-unused-arguments
"SIM", # flake8-simplify
"TCH", # flake8-type-checking
"PTH", # flake8-use-pathlib
"RUF", # Ruff-specific rules
]
ignore = [
"E501", # line too long (handled by formatter)
]
[tool.ruff.lint.isort]
known-first-party = ["openshell"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.pytest.ini_options]
testpaths = ["python"]
python_files = ["*_test.py"]
python_functions = ["test_*"]
addopts = "-v --tb=short"
asyncio_mode = "auto"
markers = [
"gpu: requires a GPU-capable gateway and GPU-enabled sandbox image",
]
[tool.coverage.run]
source = ["python"]
branch = true
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise NotImplementedError",
"if TYPE_CHECKING:",
]